Cloud based computer power management

ABSTRACT

According to one general aspect, a method of providing data to a client device may include receiving a request from a client device for a multi-element document. The method may also include receiving, from the client device, an indicator related to the level of system resources of the client device. The method may include dynamically adjusting one or more of the elements included by the requested multi-element document based, at least in part, upon the received indicator. The method may further include transmitting the adjusted multi-element document to the client device.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority to U.S. Provisional Patent Application61/251,286, filed Oct. 13, 2009, titled “POWER MANAGEMENT AND DATACACHING IN A COMPUTING PLATFORM,” which is incorporated herein byreference in its entirety.

TECHNICAL FIELD

This description relates to the management of system resources of anapparatus, and more specifically to the dynamic alteration or editing ofa multi-element document based upon the available system resources.

BACKGROUND

Generally, web pages, other multi-element documents, or data areprovided by a server to a client or requesting device across a networkor communications channel. Generally, the server provides the web pageto the client or requesting devices regardless of the capabilities ofthe client or requesting device. Frequently, if a client or requestingdevice wishes to receive a web page or other information suited to thedevice's capabilities, the client or requesting device may sometimesrequests a special web page (e.g., a web page tailored for mobiledevices, etc.).

Further, as web pages become more complex (e.g., including video, audio,dynamically executing scripts, streaming media, running executable code,etc.) the amount of system resources consumed by rendering or displayingthe web pages increases. For example, highly complex web pages, mayinclude a number of features or elements which cause a noticeableconsumption of a client device's battery power or a sizable portion ofthe available bandwidth used to communicate with the server.

SUMMARY

According to one general aspect, a method of regulating the systemresource consumption of an apparatus may include monitoring one or moresystem resources of the apparatus. The method may also include receivinga request to display, via the apparatus, a requested multi-elementdocument. The method may include retrieving by the apparatus, at leastin part, the requested multi-element document. The method may includedynamically editing the requested multi-element document based, at leastin part, upon the monitored system resources. The method may alsoinclude displaying the dynamically edited multi-element document.

According to another general aspect, an apparatus may include aprocessor, a network interface and a memory. The network interface maybe configured to send and receive signals as part of operating within acommunications network. The memory may be configured to store executablecode. When the executable code is executed it may cause the apparatus tomonitor one or more system resources of the apparatus. The apparatus mayreceive a request to display, via the apparatus, a requestedmulti-element document. The apparatus may also retrieve by theapparatus, at least in part, the requested multi-element document. Theapparatus may dynamically edit the requested multi-element documentbased, at least in part, upon the monitored system resources; anddisplay the dynamically edited multi-element document.

According to another general aspect, a computer-readable medium may betangibly embodied and include executable code. The executable code, whenexecuted, may be cause an apparatus to: receive a request from a clientdevice for a multi-element document; receive, from the client device, anindicator related to the level of system resources of the client device;dynamically adjust one or more of the elements included by the requestedmulti-element document based, at least in part, upon the receivedindicator; and transmit the adjusted multi-element document to theclient device.

According to another general aspect, a method for displaying the systemresource usage of a computer may include identifying the number of opentabs in one or more tabbed based browsers running on the computer. Themethod may include determining the system resource usage of each tab.The method may further include displaying the system resource usage ofeach tab in a system resource meter.

According to another general aspect, a method of preserving one or moresystem resources in a computer may include identifying the number of webapplications running in open tabs in one or more tab based browsersrunning on the computer. The method may include measuring the systemresource usage of each web application in each open tab. The method mayinclude comparing the system resource usage of each web application ineach open tab to a system resource threshold. The method may alsoinclude throttling any web application in an open tab whose power drawexceeds the system resource threshold.

According to another general aspect, an apparatus may include aprocessor and a memory. The memory may to store executable code that,when executed, causes the apparatus to: measuring the system resourceusage of each web application in each open tab; comparing the systemresource usage of each web application in each open tab to a systemresource threshold; and throttling any web application in an open tabwhose power draw exceeds the system resource threshold.

According to another general aspect, a computer readable medium may betangibly embodied on a computer-readable medium and include excusablecode. The executable code may, when executed, cause a data processingapparatus to: monitor one or more system resources of the apparatus;receive a request to display, via the apparatus, a requestedmulti-element document; retrieve by the apparatus, at least in part, therequested multi-element document; dynamically editing the requestedmulti-element document based, at least in part, upon the monitoredsystem resources; and display the dynamically edited multi-elementdocument.

According to one general aspect, a method of providing data to a clientdevice may include receiving a request from a client device for amulti-element document. The method may also include receiving, from theclient device, an indicator related to the level of system resources ofthe client device. The method may include dynamically adjusting one ormore of the elements included by the requested multi-element documentbased, at least in part, upon the received indicator. The method mayfurther include transmitting the adjusted multi-element document to theclient device.

According to another general aspect, an apparatus may include aprocessor, a network interface, and a memory. The network interface maybe configured to send and receive signals as part of operating within acommunications network. The memory may be configured to store executablecode. The executable code may, when executed, cause the apparatus toreceive a request from a client device for a multi-element document. Theapparatus may receive, from the client device, an indicator related tothe level of system resources of the client device. The apparatus maydynamically adjust one or more of the elements included by the requestedmulti-element document based, at least in part, upon the receivedindicator; and transmit the adjusted multi-element document to theclient device.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

A system and/or method for managing system resources, substantially asshown in and/or described in connection with at least one of thefigures, as set forth more completely in the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example embodiment of a system inaccordance with the disclosed subject matter.

FIG. 2 is a block diagram of an example embodiment of a system inaccordance with the disclosed subject matter.

FIG. 3 is a diagram of an example embodiment of a user interface inaccordance with the disclosed subject matter.

FIG. 4 is a diagram of an example embodiment of a user interface inaccordance with the disclosed subject matter.

FIG. 5 is a block diagram of an example embodiment of an apparatus inaccordance with the disclosed subject matter.

FIG. 6 is a block diagram of an example embodiment of a system inaccordance with the disclosed subject matter.

FIG. 7 is a diagram of two example embodiments of a user interface inaccordance with the disclosed subject matter.

FIG. 8 is a diagram of an example embodiment of a user interface inaccordance with the disclosed subject matter.

FIG. 9 is a flowchart of an example embodiment of a technique inaccordance with the disclosed subject matter.

FIG. 10 is a block diagram of an example embodiment of an apparatus inaccordance with the disclosed subject matter.

FIG. 11 is a diagram of an example embodiment of a user interface inaccordance with the disclosed subject matter.

FIG. 12 is a diagram of an example embodiment of a user interface inaccordance with the disclosed subject matter.

FIG. 13 is a diagram of an example embodiment of a user interface inaccordance with the disclosed subject matter.

FIG. 14 is a block diagram of an example embodiment of an apparatus inaccordance with the disclosed subject matter.

FIG. 15 is a flowchart of an example embodiment of a technique inaccordance with the disclosed subject matter.

FIG. 16 is a flowchart of an example embodiment of a technique inaccordance with the disclosed subject matter.

FIG. 17 is a flowchart of an example embodiment of a technique inaccordance with the disclosed subject matter.

FIG. 18 is a flowchart of an example embodiment of a technique inaccordance with the disclosed subject matter.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Described herein are a device and a technique for operating a device toconserve system resources (e.g., battery power, network bandwidth,etc.). Both a client-side embodiment and a server-side embodiment aredisclosed below. Further, two embodiments of the main client-sideembodiment are disclosed below. Generally, a client device may request aweb page or web application. In addition, the client device may monitorits usage of system resources. Based upon the level of various systemresources, the requested web page or web application may be edited oradjusted. In one embodiment, the client device may edit the requestedweb page, once it has been received. In another embodiment, the servermay edit or adjust the web page before transmitting it to the clientdevice. Further, the client device may monitor the consumption of systemresources by web pages or web applications displayed on the clientdevice. In response to the respective web page's system resourceconsumption, the client device may dynamically throttle the consumptionof system resource (e.g., reduce the number of execution cycles allottedto the web application, etc.). It is understood that the above aremerely a few illustrative examples to which the disclosed subject matteris not limited.

FIG. 1 shows an example of a generic computer device 100 and a genericmobile computer device 150, which may be used with the techniquesdescribed here. Computing device 100 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 150 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 100 includes a processor 102, memory 104, a storagedevice 106, a high-speed interface 108 connecting to memory 104 andhigh-speed expansion ports 110, and a low speed interface 112 connectingto low speed bus 114 and storage device 106. Each of the components 102,104, 106, 108, 110, and 112, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 102 can process instructions for executionwithin the computing device 100, including instructions stored in thememory 104 or on the storage device 106 to display graphical informationfor a graphical user interface (GUI) on an external input/output device,such as display 116 coupled to high speed interface 108. In otherimplementations, multiple processors and/or multiple buses may be used,as appropriate, along with multiple memories and types of memory. Also,multiple computing devices 100 may be connected, with each deviceproviding portions of the necessary operations (e.g., as a server bank,a group of blade servers, or a multi-processor system, etc.).

The memory 104 stores information within the computing device 100. Inone implementation, the memory 104 includes a volatile memory unit orunits. In another implementation, the memory 104 includes a non-volatilememory unit or units. The memory 104 may also be another form ofcomputer-readable medium, such as a magnetic or optical disk.

The storage device 106 is capable of providing mass storage for thecomputing device 100. In one implementation, the storage device 106 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 104, the storage device 106,or memory on processor 102.

The high speed controller 108 manages bandwidth-intensive operations forthe computing device 100, while the low speed controller 112 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 108 iscoupled to memory 104, display 116 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 110, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 112 is coupled to storage device 106 and low-speed expansionport 114. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 100 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 120, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 124. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 122. Alternatively, components from computing device 100 may becombined with other components in a mobile device (not shown), such asdevice 150. Each of such devices may contain one or more of computingdevice 100, 150, and an entire system may be made up of multiplecomputing devices 100, 150 communicating with each other.

Computing device 150 includes a processor 152, memory 164, aninput/output (I/O) device such as a display 154, a communicationinterface 166, and a transceiver 168, among other components. The device150 may also be provided with a storage device, such as a micro-drive orother device, to provide additional storage. Each of the components 150,152, 164, 154, 166, and 168, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 152 can execute instructions within the computing device150, including instructions stored in the memory 164. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 150, such ascontrol of user interfaces, applications run by device 150, and wirelesscommunication by device 150.

Processor 152 may communicate with a user through control interface 158and display interface 156 coupled to a display 154. The display 154 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 156 may comprise appropriatecircuitry for driving the display 154 to present graphical and otherinformation to a user. The control interface 158 may receive commandsfrom a user and convert them for submission to the processor 152. Inaddition, an external interface 162 may be provide in communication withprocessor 152, so as to enable near area communication of device 150with other devices. External interface 162 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 164 stores information within the computing device 150. Thememory 164 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 174 may also be provided andconnected to device 150 through expansion interface 172, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 174 may provide extra storage space fordevice 150, or may also store applications or other information fordevice 150. Specifically, expansion memory 174 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 174may be provide as a security module for device 150, and may beprogrammed with instructions that permit secure use of device 150. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 164, expansionmemory 174, or memory on processor 152, that may be received, forexample, over transceiver 168 or external interface 162.

Device 150 may communicate wirelessly through communication interface166, which may include digital signal processing circuitry wherenecessary. Communication interface 166 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 168. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 170 mayprovide additional navigation- and location-related wireless data todevice 150, which may be used as appropriate by applications running ondevice 150.

Device 150 may also communicate audibly using audio codec 160, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 160 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 150. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 150.

The computing device 150 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 180. It may also be implemented as part of a smartphone 182, personal digital assistant, or other similar mobile device.

FIG. 2 is a block diagram of an example embodiment of a system 200 inaccordance with the disclosed subject matter. In one embodiment, thesystem 200 may include a client or user device 202 which is configuredto be controlled or accessed by a user 290, and an application server204. The application server 204 may be configured to serve or transmitone or more web pages or multi-element documents (e.g., web page 220) tothe client or user device 202.

In this context, the term “web page” includes a document or resource ofinformation that is suitable for transmission over a network (e.g., theInternet, an intranet, etc.) and includes a plurality of elements. Thedisclosed subject matter is not limited to a web page, but the term “webpage” provides a readily understandable embodiment. In general thedisclosed subject matter may apply to any multi-element document, fileor data.

Generally a web page may be accessed through a web browser and is oftendisplayed on a monitor or screen of a receiving device (e.g., clientdevice 200). This information is usually in Hypertext Markup Language(HTML) or Extensible HTML (XHTML) format. The web page may include aplurality of elements, each element configured to define anotherresource or information and the resource's place within the structure ofthe defining web page. Such elements may include, for example, images,videos, Universal Resource Locators (URLs), client-side scripts to beexecuted by the client device, executable code to be executed by theclient device, other documents, etc. Web pages may include files ofstatic text (e.g., static web pages), or may be constructed by serverwhen they are requested (dynamic web pages).

In one embodiment, web pages that make extensive use of client-sidescripting or client-side executable code (e.g., Flash, Java,SilverLight, etc.) may be referred to, in this context, as “webapplications”. In various embodiments, a web application may include anapplication that is accessed over a network such as the Internet or anintranet. The term may also mean a computer software application that ishosted in a browser-controlled environment (e.g., a Java applet, etc.)or coded in a browser-supported language (e.g., JavaScript and HTML) andreliant on a common web browser to render the application executable. Anapplication, is computer software designed to help the user to performsingular or multiple related specific tasks (e.g., a word processor, animage editing application, etc.). A web application, as described above,may include an application that is accessed over a network such as theInternet or an intranet and hosted within a browser-controlledenvironment.

In some embodiments, these web applications may be compared to lessactive or more inactive web pages in which the content of the web pagemay be consumed or read by the user, but not altered. Active web pagesmay include actively changing web page elements (e.g., play a video, ananimated image, stream audio, executable code, etc.). While webapplications may be thought of as “active web pages”, it is understoodthat the term “active web page” may include web pages do not rise to thelevel of complexity as web applications. For example, an active web pagemay include a video web page element, but may not make be sufficientlycomplex or help the user to perform singular or multiple relatedspecific task to be considered an application.

In one embodiment, the system 200 may include a client or user device202. The client or user device 202 may include a system resource monitor216 configured to monitor the level of system resources provided oravailable to the client or user device 202. System resources may includethe resources such as: the amount of operating power available to thedevice 202, whether the operating power is provided by a battery or asubstantially continuous supply (e.g., wall electrical socket), theamount of bandwidth provided by the communications channel or networkemployed by the device 202, the type of communications network orprotocol employed by the device 202 (e.g., a cellular network, awireless local area network (WLAN), a Wi-Fi network, a wired network,third generation (3G) cellular network, etc.), the amount of processingpower (e.g., provided by processor 210) of the device 202, the size andcapabilities of the display (not shown) of the device 202, the amount offree memory 214 of the device 202, etc., although it is understood thatthe above are merely a few illustrative examples to which the disclosedsubject matter is not limited.

In one embodiment, the user 290 may request a web page or webapplication from the application server 204. The client or user device202 may communicate this request to the server 204 via the networkinterface 212. The server 204 may transmit the requested web page 240 tothe client or user device 202. In a first embodiment, the client device202 may then dynamically edit or adjust the requested web page 240 basedupon the system resources available to the client device 202, andultimately display the edited web page 220. In a second embodiment, theserver 204 may be informed of the system resources available to theclient device 202, and then the server 204 may adjust the requested webpage based upon those system resources. The server 204 may then transmitthe adjusted web page 240 to the client or user device 202. Thisadjusted web page may be displayed to the user 290. In yet anotherembodiment, a combination of the two prior embodiments may be employedand are within the scope of the disclosed subject matter.

Accordingly, the first above embodiment will be described first. In thisembodiment, the client or user device 202 may regulate the consumptionof system resources. As described above, the user 290 may request a webpage from the application server 204. The application server 204 wouldthen provide this web page 240, which would be received by the clientdevice 202.

The client device 202 may include a system resource monitor 216. Invarious embodiments, the system resource monitor 216 may be configuredto monitor the level or capabilities (e.g., amount of battery power, thebandwidth available, etc.) of one or more system resources of the clientdevice 202. This information may be provided to the web browser or otherapplication 218.

The web browser or other application 218 may be configured to display orrender the requested web page as displayed web page 220. In theillustrated embodiment, the web browser 218 may be configured to displayor render the requested or received web page 240 based upon the level ofsystem resources available to the client device 202, as monitored by thesystem resource monitor 216. In such an embodiment, the web browser 218may dynamically edit or adjust the rendering of the web page 240. Invarious embodiments, this editing or adjustment may include the creationof an edited web page (e.g., displayed web page 220).

In one example embodiment, the web browser 218 may be informed that theamount of operating power available to the device 202 is running low. Inresponse, the web browser 218 may edit or adjust the received web page240 such that the display or processing of the web page 240 may consumeless power than web page 240 would if unedited. For example, elements ofthe received web page 240 (e.g., video, executable scripts or code,etc.) may be edited, removed, or replaced with substitute elements thatconsume less power (e.g., static images, static text, longer refreshrates, etc.). Although, it is understood that the above is merely oneillustrative example to which the disclosed subject matter is notlimited.

Other examples may include, but are not limited to: replacing large orcomplex images with smaller or simpler images, editing client-sidescripts to reduce the amount of system resources consumed by theexecution of the script (e.g., reducing the frequency at which a scriptrefreshes data, removing graphical effects, etc.), limiting or stoppingthe execution of compiled executable code or a plug-in based element(e.g., Flash, Java, SilverLight, etc.), lowering the bitrate of a videoor audio stream, etc. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

In various embodiments, the user 290 may be provided with an indicationthat the requested web page 240 has been edited to create the edited ordisplayed web page 220. In such an embodiment, the user 290 may be ableto request that one or more of the edits or alterations be un-done. Forexample, if a video element has been replaced with a static imageelement, the user 290 may request that the original video element berestored to the edited web page 220. In some embodiments, the webbrowser or other application 216 may be configured to re-edit the webpage 240 or 220 to restore a previously removed, replaced, or editedelement. After the restoration has occurred, the new edited web page,now including the requested element (e.g., the video element, etc.), maybe displayed.

In one embodiment, the user 290 or other entity (e.g., an administrator,the application 218 developer, etc.) may establish one or morepredetermined preferences indicating what elements and how elementsshould be edited. For example, a user preference may exist indicatingthat video elements below a certain size should remain un-edited, thatweb pages from certain servers or web sites should remain un-edited,that image elements having certain shapes and positions within the webpages (e.g., banners, footers, etc.) should be edited, etc., although itis understood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

In some embodiments, the client device 202 may include a learningcomponent which, while possibly starting with the predeterminedpreferences, dynamically adjusts the editing process based upon feedbackto the edits. In such an embodiment, the client device 202 may monitoror record which elements the user 290 indicated they wanted restored orinteracted with. For example, the user's request to turn on or restore avideo element may be recorded, and cause the video element or a similarvideo element to not be replaced or removed in a subsequent editing of aweb page. In various embodiments, this feedback information may affectre-requests of the same web page, web pages from the same server, or webpages from all servers in general, or a combination thereof. It isunderstood that various levels of monitoring and correlation of userpreferences with web page elements, web pages, and web sites arecontemplated. In various embodiments, these feedback preferences and/orpredefined preferences may be stored within a user preference databaseor repository 222.

In another embodiment, the monitored system resources may besufficiently plentiful that the web browser or other application 218does not edit the requested web page 240, but merely displays the webpage 240 in an un-edited form. For example, if the client device 202 isoperating via a wall electrical outlet and a wired network connection,the web browser 218 may provide no benefit by reducing the power and/orbandwidth consumption of the requested web page 240, although it isunderstood that the above is merely one illustrative example to whichthe disclosed subject matter is not limited.

In such an embodiment, the determination of what amount or even the typeor kind of editing or adjustment that may be applied to a requested webpage 240 may be determined by one or more predefined threshold valuesrelating to the monitored system resources. For example, the requestedweb page 240 may be edited for purposes of power consumption only if, inone embodiment, the device 202 is operating with a battery having lessthan a 50% charge. In some embodiments, secondary thresholds may bedefined which dictate what elements are to be edited or adjusted. Forexample, an element may be edited if more than a threshold amount of agiven system resource would be consumed, etc. It is understood that theabove are merely a few illustrative examples to which the disclosedsubject matter is not limited.

In various embodiments, the editing or adjusting of the requested webpage 240 may occur before the entirety of the requested web page 240 hasbeen received. Often a web page includes a variety of data portions orfiles (e.g., the structure or HTML document, the images, the videos, theexecutable code, the client-side scripts, etc.). These various pieces ofdata may be transmitted to the client device 202 as a number of distinctfiles or messages. In such an embodiment, the client device 202 may beconfigured to receive a file or message which defines the structure andelements of the requested web page 240. The client device 202 may thenedit or adjust this structural definition of the web page. Based uponthis edited portion of the web page, the client device 202 may notrequest some files or data that, while included in the originalrequested web page 240, are no longer included by the edited web page220. For example, if a video file, or more accurately the elementassociated with the video file, is replaced or removed as part of theediting process, the client device 202 may refrain from downloading orrequesting the removed video file.

In another embodiment, the client device 202 may receive all of thefiles or data associated with the requested web page 240, and then cacheor discard files or data no longer referred to by the edited web page220. If cached, these removed files or data may be stored in the memory214 and quickly accessible (e.g., without the need for a network-basedfile request, etc.) if the user 290 requests their restoration.Although, it is understood that the above is merely one illustrativeexample to which the disclosed subject matter is not limited.

Returning to the second above embodiment, in this embodiment, theapplication server 204 may regulate or help regulate the consumption ofsystem resources. As described above, the user 290 may request a webpage from the application server 204. In this embodiment, upon receivingthe web page 240, the client device 202 may simply display the receivedweb page 240 to the user 290 without any editing. It may be theapplication server 204 which edits or adjusts the web page prior totransmitting it the client device 202. However, in various embodiments,combinations of the first client-side embodiment and the secondserver-side embodiment may exist.

In one embodiment, in addition to the request for the web page 240, theserver 204 may receive an indication or indicator, from the clientdevice 202, related to the level of system resources of the clientdevice 202 (e.g., as monitored by the system resource monitor 216,etc.). Based, at least in part, upon the indication of the systemresources of the client device 202, the server 204 may be configured toadjust or edit the requested web page to accommodate the level of clientdevice 202's system resources.

In various embodiments, the server 204 may be better positioned orbetter aware than the client device 202 to edit or adjust the requestedweb page. For example, the client device 202 may not be able tosufficiently understand the client-side scripts or executable code. Insome embodiments, the server 204, or the developer (not shown) whocreated the web page, may be better able to edit or adjust theclient-side scripts or executable code. It is understood that the aboveare merely a few illustrative examples to which the disclosed subjectmatter is not limited.

For example, the server 204 may include a plurality of versions of therequested web page (e.g., web pages 236 and 238, etc.). One of these webpages 236 may be designed or configured to be used on a client device202 with an abundance of system resources (e.g., the web page 236 mayinclude streaming media, executable code, Web 2.0 scripting, etc.) or anotherwise active web page. Another of the web pages 238 may be designedor configured to be used on a client device 202 with a dearth of systemresources (e.g., including static text, a few static images, etc.) orotherwise an inactive web page. It is understood that while only twoillustrative web pages (e.g., web pages 236 and 238, etc.) the disclosedsubject matter is not limited to any such number.

In one embodiment, the server 204 may include an application adapter 234configured to dynamically adjust one or more of the elements included bythe requested web page based, at least in part, upon the receivedindicator of the client device's 202 system resources. In variousembodiments, the application adapter 234 may select one of the pluralityof web pages (e.g., web pages 236 or 238, etc.) to fulfill the requestfor a given web page. In a specific embodiment, a high system resourceversion of the requested web page 236 may include a number ofclient-side scripts (e.g., Asynchronous JavaScript (AJAX)), executablecode (e.g., Flash, etc.), and/or streaming media, which may consume arelatively large amount of operating power and network bandwidth.Conversely, a low system resource version of the requested web page 238may merely include text-based HTML and with hyperlinks (e.g., as opposedto scripted links).

In another embodiment, the application adapter 234 may edit therequested web page. The application adapter 234 may edit elements basedupon the indicated level of system resources of the client device 202.For example, if the client device 202 is low on operating power, theapplication adapter 234 may be configured to edit client-side scripts ortimers to reduce the frequency at which actions (e.g., a web pagerefresh or reload, etc.) occur, select different graphical elements(e.g., images, videos, executable code-based animations, etc.) to reducethe amount of system resources (e.g., bandwidth, etc.) consumed as aresult of the web page, etc. It is understood that the above are merelya few illustrative examples to which the disclosed subject matter is notlimited.

In various embodiments, the edited web page (e.g., web page 236) may befurther processed by an application engine 232. The application engine232 may be configured to dynamically build or create the web page 240based upon various variables. Such dynamic creation may includeserver-side scripting, database look-ups, merging multiple files into asingle web page 240, etc. In such an embodiment, the adjusted web page(e.g., web page 236) may include a template web page which is thenexpanded upon (e.g., by the insertion of data or variables, etc.) by theapplication engine 232 to create the transmitted web page 240. Forexample, the main web page of a news site may dynamically create theirfront page by replacing placeholder variables (defined by a web pagetemplate) with news stories, headlines, and images.

FIG. 3 is a diagram of an example embodiment of a user interface (UI)300 in accordance with the disclosed subject matter. UI 300 illustratesan example form of a web page that may be displayed by a web browser orother application. Illustrated is a news web page, but it is understoodthat the above is merely one illustrative example to which the disclosedsubject matter is not limited.

In one embodiment, the UI 300 may include a plurality of tabs 302, 304,306, 308, etc. Each of these tabs 302, et al. may be configured todisplay a web page. Tab 302 may be in the foreground or “have focus”within the UI 300. In this context, the phrase “have focus” and itsderivatives may mean that the operating system or application hasdetermined that the focused UI element (e.g., tab, text field, etc.) isdesignated as the UI element configured to receive user input. In theillustrated embodiment, this focus on tab 302 is illustrated by thehighlighting of the handle of tab 302. Tabs 304, 306, and 308 are in thebackground and do not have focus, but may each include a web page andinclude various web page elements which consume resources.

In one embodiment, the client device or apparatus may be configured toedit the web pages displayed or included in the background orout-of-focus tabs (e.g., tabs 304, 306, 308, etc.) first or before thedisplayed or focused web page of tab 302. In such an embodiment,selectively editing tabs 304, 306 or 308, which the user is notinteracting with, may conserve enough system resources to allow the webpage of tab 302 to be displayed without edits. Examples of edits oradjustments to the web pages included by tabs 304, 306, or 308 mayinclude, but are not limited to, the stopping the streaming of media(e.g., video, audio, etc.), the removal of an animation, the removal orcessation of execution of a client-side script or executable code, etc.As indicated in the examples above, the adjustment of the web pages mayinclude a change in state (e.g., from playing to stopped or paused,etc.) of a web page element (e.g., video, audio, etc.), instead of theremoval, replacement, or alteration of the web page element.

Returning to the focused tab 302, a sample web page is illustrated. Thesample may include a news web page, such as the news site's index orhome web page. The illustrated web page of tab 302 is shown in anun-edited or un-adjusted form and may include the web page as requestedfrom an application server (e.g., server 204 of FIG. 2). In contrastFIGS. 4 and 11 illustrate sample adjustments or edited forms of the webpage that may be made or result from the client device or server,respectively. The web page of tab 302 may be displayed by the clientdevice when there are sufficient system resources to do so, or whensufficient system resources have been conserved by editing or adjustingone or more of the background tabs 304, 306, or 308, as described above.In one embodiment that includes a multi-threaded or multi-processoperating system configured to execute multiple applicationssubstantially simultaneously, other system resource conservations may bemade by editing or altering the behavior or content of otherapplications or web browsers (not shown).

In the illustrated embodiment, the web page of tab 302 may include anumber of graphical or image web elements. For example, a banner for thenews site may be shown by element 310. A footer image element 322 mayinclude image mapped web element configured to map portions of the imageto various hyperlinks or script actions. These mapped links may providea site map, or legal information, etc. Such image elements may includevery little information of value to the user. For example, the bannerimage element 310 may be redundant to the user given that a URL isdisplayed in an address bar of the UI 300 or that the user explicitlyrequested this web page.

Some web elements may change for each iteration of the web page (e.g.,due to a server-side script and database, etc.). However, only some ofthese web elements may provide the information that the user is reallyinterested in. For example image elements 312 and 312 a may show apicture related to the news stories of web elements 316 and 316 a,respectively. In various embodiments, these image elements may includestock images (e.g., a flag, picture of a politician, etc.) orspecialized images (e.g., picture of a less well known person discussedin the story, an info-graphic, etc.).

Likewise, web elements 314 and 314 a may include an image or graphic ofthe headlines related to the news stories of web elements 316 and 316 a,respectively. The information conveyed by these image elements 314 and314 a may be of little or great importance to the user. Web elements 316and 316 a may include static text, such as blurbs or portions of a newsstory. Web elements 316 and 316 a may include a hyperlink to other webpages (e.g., a web page that includes the entirety or a larger portionof the teased news story, etc.).

In one embodiment, the web page of tab 302 may include one or moremultimedia or high system resource consumption items. Web element 318may include a video element (e.g., the HTML Video tag, an embedded videofile, etc.). Such a video element may be configured to stream to theapparatus or client device, or be downloaded and cached within theclient device. In various embodiments, this may consume systemresources, such as bandwidth, memory space, processing power, etc.

In various embodiments, the web page of tab 302 may include one or moreelements that are executed by the client device (e.g., a client-sidescript, compiled executable code, etc.). Web element 320 illustrates anexample web element that may make use of AJAX scripting to dynamicallychange the displayed text and asynchronously request data or informationfrom a server or other remote device. Such a web element 320 may consumesystem resources, such as bandwidth, memory space, processing power,etc., and, due in part to the dynamic nature of the illustrated element,prove difficult for the client device to compute or determine the impactof the web element 320 on the system resources.

The web page of tab 302 may include one or more advertisements or webelements which point to another web site or server. The web elements mayinclude elements 330 and 330 a configured to display image elements. Invarious embodiments, these image elements may include animated imageelements that include a plurality of image elements that are rotatedamongst or swapped out over a period of time. In another embodiment,these advertisement image elements 330 and 330 a may be relativelysmall.

The web element 332 may include a plug-in managed web element (e.g.,executable code, Flash, Java, etc.). In various embodiments, a plug-inor extension may be a piece of executable code, associated with the webbrowser or application, which is configured to process web elements in away differing from or in addition to the processing or renderingprovided by the web browser or hosting application. For example, theAdobe Shockwave plug-in may be configured to process Flash executablecode or files which the hosting web browser is not configured toprocess. In various embodiments, a plug-in may enabled or disabled, andthe client device may edit or adjust web elements based upon the state(enabled, disabled, installed, etc.) of a plug-in or extensionconfigured to process the web element. Some such web elements may beconfigured to download additional files or data from a server. Some suchweb elements may be configured to play or stream videos, audio, or othermedia. In various embodiments, the client device or web browser may notbe configured to analyze the working of the plug-ins or the web elementsassociated with such plug-ins, and therefore the calculation of theimpact by such a web element on the system resources may be difficult orimpossible to make. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

It is understood that the above are merely a few illustrative examplesto which the disclosed subject matter is not limited. The UI 300 and webpage of tab 302 illustrate merely a few sample web page elements whichare used to show how the disclosed subject matter may edit or adjust arequested web page. These example elements and their handling by theclient device or server are not meant to be definitive, but merelyillustrative. Further it is understood that the disclosed subject matteris not limited to a web browser but to any application which requestsand receives data in an editable format.

FIG. 4 is a diagram of an example embodiment of a user interface 400 inaccordance with the disclosed subject matter. In such an embodiment, therequested web page of tab 302 may be edited or adjusted at least in partto reduce or manage the amount of system resources consumed bydisplaying, rendering or processing the web page. The resultant editedweb page of tab 302 is illustrated in FIG. 4. It is understood that theabove is merely one illustrative example to which the disclosed subjectmatter is not limited.

In one embodiment, the web page elements 310 (the trademarked bannerimage) may be edited or replaced with a placeholder web element 410. Inone embodiment, the client device may determine which elements to editor replace based upon predefined or historical knowledge. For example,predefined definitions may be in place that state that the element 310is a banner and may be removed from the web page. Such predefineddefinitions may be based upon domain names and vary from web site to website. Conversely, the determination may be based upon rules regardingthe size or shape of make-up (e.g., color distribution, etc.) of theimage or element. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

In another embodiment, the determination for element 310 or any otherweb page element may be based upon a set of user preferences. In oneembodiment, these user preferences may be compared to explicitly entereduser preferences (e.g., entered via an options dialog box or other UI,etc.). In another embodiment, the user preferences may be based uponprevious actions or requests for restoration taken by the user, asdescribed above. For example, if the user frequently requests that thebanner image of element 310 be restored, the client device may learnthis preference and refrain from editing the element 310 in the futureor, the client device may lower or raise (as appropriate) the thresholdlevel at which the element 310 is edited or replaced, and so on.

In various embodiments, instead of the user preferences being based upona user's express actions (e.g., prior restoration requests, explicitlyentered preferences, etc.), the user preferences may be based upon theaggregate preferences of a plurality of users. In such an embodiment andfurther described in FIG. 6, the preferences of a large number of usersmay be aggregated or averaged to form a baseline set of userpreferences. For example, the baseline user preferences may indicatethat a certain number of users (e.g., 80% of users) never ask that theelement 310 be restored. In such an embodiment, the device may determinewhether or not to edit a web page element (e.g., element 310) based uponwhat the aggregate or baseline user preferences indicate the currentuser may desire or prefer.

In another example, this current user's preferences may be compared touser preferences of the plurality of users to find a sub-portion of theaggregate users which mostly correlate or match the current user. Forexample, while 80% of overall users never requested the restoration ofelement 310, users like the current user requested the restoration 90%of the time, wherein “like the user” may be determined by a predefinedrule set and the current user's historical preferences. For example,such rules may include: the currents user's device specifications, thecurrent user's browsing pattern, the current user's demographics, thecurrent user's geographic location, etc. It is understood that the aboveare merely a few illustrative examples to which the disclosed subjectmatter is not limited.

In such an embodiment, user preferences, either in the aggregate orregarding the sub-portion of the aggregated users, may influence thedetermination of whether or not to edit or adjust the element 310. Forexample, if 90% of users like the current user request the restorationof element 310, the client device may not or may refrain from editingthe element 310. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited. It is also understood that while the use of user preferenceshas been discussed in relation to element 310 the concept applies to anyelement of the web page.

In one embodiment, the client device may replace the web page element310 with a placeholder web page element 412. In the illustratedembodiment, the contents or definitions of the web page elements 310 maybe edited or altered to include the placeholder element 410. Forexample, an HTML IMG tag element configured to display a large compleximage from a remote server may be replaced with a placeholder image thatis locally available and smaller, such that bandwidth and power areconserved. In other embodiments, the web element (e.g. web page element318) may be replaced in its entirety. It is understood that the aboveare merely a few illustrative examples to which the disclosed subjectmatter is not limited.

Further, in some embodiments, the client device may download and cachethe replaced element or its contents (e.g., an image file, etc.) or mayrefrain from downloading the replaced element, as described above. Insome embodiments, the decision to download and cache, but not todisplay, versus the decision to refrain from downloading the replacedelement may be based upon the user preferences (whether aggregated,individualized, or a combination thereof). For example, if the clientdevice determines that a user is likely to request the restoration ofthe edited web page element, but system resources are very low, theclient device may edit the element to include a placeholder element butdownload (in whole or part) the original element or its contents to haveavailable if needed. An illustrative example of this may include avideo, which may be edited or replaced, but which the client device maybuffer or cache a portion of such that system resources are notcommitted to the entire replaced element but only a fraction and thevideo may still be quickly available to the user if its restoration isrequested. Although, it is understood that the above is merely oneillustrative example to which the disclosed subject matter is notlimited.

In various embodiments, the placeholder elements (e.g. elements 410 or412, etc.) may include an indication 414 (e.g., an icon, badge, etc.)that informs the user what type of element has been replaced (e.g.,image, video, script, etc.) and/or how much or what type of systemresources are being saved or conserved by the editing, removal orreplacement of the element.

In some embodiments, the web page or element edited or adjusted mayinclude an alternate means of rendering the element. For example, animage mapped graphic (e.g., element 322) which includes hyperlinks basedupon the place within an image where the user clicks, may be replacedwith static text based hyperlinks (element 416). The original element322 may indicate that this alternate representation of the elementexists, but is not preferred. The client device may alter or edit theelement 322 to use the alternate form or representation instead of thepreferred form or representation. Such alternate forms may includefields within the element or additional files that may be retrieved fromthe server. The client device may be configured to select none of thesepossible forms or representations provided by the original element 322and instead replace the element 322, as described above.

In one embodiment, the client device may have determined that elements314, 316, 314 a, 316 a are not to be replaced. In such an embodiment,the client device may determine that the use of system resourcesinvolved with these elements 314, 314 a, 316, and 316 a is eitheracceptable, that the elements are likely to include user desiredinformation (e.g., contain the news story which the user might want toread, etc.), or based upon user preferences will be restored. In such anembodiment, the client device may display the elements 314, et al. intheir original or substantially unedited form.

In various embodiments, the elements of the web page may include tags orfields which may aid the client device in the determination of importantor desired information. For example, the elements 314 and 314 a mayinclude a tag or field that indicates that they include information ofimportance to the elements 316 and 316 a, respectively. The tags orfields may have various levels of granularity, for example, a tieredsystem of importance (e.g., high importance, normal importance, lowimportance, etc.), a system of associated elements (e.g., elements 314and 316 being tagged with the same tag, e.g., “news story #1”, etc.), ora system of categories (e.g., “advertisement”, “boilerplate”, “storybody”, “story graphics”, etc.), although it is understood that the aboveare merely a few illustrative examples to which the disclosed subjectmatter is not limited.

In some embodiments, the client device may edit the elements 314 et al.slightly in a way that does not materially affect the desiredinformation contained in the element. For example, animated images maynot be animated or may rotate amongst the included plurality of images,animated images may transition between images more slowly, specialeffects (e.g. dancing or blinking text, etc.) may be disabled, etc. Itis understood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

In one embodiment, the elements 312 and 312 a may be replaced withplaceholder elements 412. In such an embodiment, the client device mayhave determined that the saving in system resources was worth thereplacement or editing, even though the client device may have detectedthat the elements 312 and 312 a were associated with the non-replacedelements 316 and 316 a (e.g., via an element tag or field, a predefinedassociation rule, etc.). In various embodiments, the association betweenelements may be indicated via a set of predefined rules. As describedabove, the client device may determine that the user has not orinfrequently requests the restoration of the removed elements if theyare removed. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

Likewise, elements 330, 332, and 330 a may also be edited or adjusted,for example with placeholder elements. As described above, theseelements 330, 332, and 330 a may include therefore, the decision to editor replace the elements may be based upon keywords associated with theelements (e.g., a domain path, the word “advert” in the path respectiveelement's fields, etc.”). In another embodiment, the determination maybe based upon the type of element or type of media included or employedby the element. For example, the element 332 may include precompiledexecutable code (e.g., a Flash file, etc.). The client device may not beable to estimate sufficiently the system resource usage of such anelement type. However, the client device may be configured to edit orremove such files, based upon predefined rules or user preferences, etc.Or, the client device may be configured to base the system resourceusage or savings determination based upon a defined average use ofsystem resources (e.g., based upon a history of the element type, apredefined value, etc.). In another embodiment, the client device mayallow the element 332 to be displayed in an un-altered fashion, butlater edit or remove the element 332 once a certain amount of systemresources have been consumed by the element 332. It is understood thatthe above are merely a few illustrative examples to which the disclosedsubject matter is not limited.

As described above, in various embodiments, the user may indicate thatone or edited or removed elements be restored. In one embodiment, thismay be as simple as clicking on the placeholder image or icon for theelement or right-clicking and selecting the request from a pop-up menu.In various embodiments, a confirmation action (e.g., a dialog box) maybe presented to the user to confirm that the user wishes to expend thesystem resources the restored element is expected to consume.

In such an embodiment, the client device may be configured to thenre-edit to displayed web page to include the restoration of therequested element. This newly edited web page may be displayed (in wholeor part) to the user. In some embodiments, the edits may have includedconditional scripting, as described above, allowing the web page todynamically alter the elements shown based upon the conditional scripts.For example, a user may wish to view the video element 318. The user mayclick on the placeholder image 412 included by the edited element 318.In response, the client device may re-edit the web page, restoring theoriginal video element 318 (see in FIG. 3) and display the newly editedweb page to the user. Alternately, a conditional script may detect theuser's request and switch from displaying the placeholder image todisplaying the original video. In some embodiments, this editing andre-displaying may include downloading one or more elements or files fromthe server. In another embodiment, the non-displayed or originalelements, files or data may be cached within the client device.

In various embodiments, during the re-editing process the statuselements of the web page may be reevaluated based upon any updatedsystem resource conditions. For example, if system resources haveincreased since the first editing of the web page, more originalelements may be displayed. Conversely, if the system resources haveremained the same or lower, the additional usage caused by restoring therequested element may cause previously un-altered elements to be editedor removed. In yet another embodiment, the requested element may simplybe restored without affecting other elements and the concern given tothe use of system resources overridden by the user's request. It isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

It is understood that while the same placeholder elements 410 and 412are shown for the replaced elements (e.g., elements 312 and 318) avariety of placeholder elements may be employed. The section of whichplaceholder element to employ may be based upon the type of elementbeing edited (e.g., video, image, script, etc.), the system resourcesaved or conserved by replacing the element, or other considerations.

In one embodiment, the client device may have detected that active webelements 318 and 320 may have consumed too much of one or more systemresources. As described above, this determination may be based upon aweb page element's expected use of a given system resource and whetheror not that expected use would exceed a predefined threshold. In anotherembodiment, the determination may be based upon a target threshold bywhich the web page's system resource use is to be reduced (e.g., 80%bandwidth reduction, etc.). In yet another embodiment, the web elementsmay be identified for alteration or editing based upon web page elementtype (e.g. video, AJAX or other dynamic script, etc.). It is understoodthat the above are merely a few illustrative examples to which thedisclosed subject matter is not limited.

In such an embodiment, the client device may replace the web pageelements 318 and 320 with a placeholder web page element 412. In theillustrated embodiment, the contents of definitions of the web pageelements 318 and 320 may be edited or altered to include the placeholderelement 412. For example, an HTML Video tag element configured toautomatically download and play a video may be edited to only downloadand play the video when manually requested by the user, such thatbandwidth and power are conserved until the user specifically requeststheir use. A script may be edited to refrain from executing until a usermanually requests the script's execution (e.g., an If-Then statementdisplaying the placeholder element until the user selects theplaceholder element and then the original script executes, etc.). Inother embodiments, the web element (e.g. web page element 318) may bereplaced in its entirety. It is understood that the above are merely afew illustrative examples to which the disclosed subject matter is notlimited.

FIG. 5 is a block diagram of an example embodiment of an apparatus 500in accordance with the disclosed subject matter. In one embodiment, theapparatus 500 may include an operating system and applications (e.g., aweb browser). In various embodiments, some or all of the apparatus 500may be embodied in hardware, firmware, software, or a combinationthereof.

In one embodiment, the apparatus 500 may include a data retrieval engine502 configured to request and receive data 550 from another device orother component coupled with the apparatus 500 (e.g., a memory of alarger apparatus). The received data 550 may include a requested webpage, a portion of a requested web page, or a file associated with therequested web page (e.g., an image file, a portion of a video stream, ascript file, etc.).

In one embodiment, the apparatus 500 may include a system resourcemonitor interface 504. The system resource monitor interface 504 may beconfigured to interface or send and receive messages to and from asystem resources monitor. In some embodiments, more than one systemresource monitor may exist. The system resource monitor interface 504may be configured to provide information to the rest of the apparatus500.

In some embodiments, the system resource monitor interface 504 may beconfigured to provide information or a message to a remote server,wherein the message includes an indicator related to the level of one ormore system resources of the apparatus (e.g., an indication of a type ofweb page requested, fields and values representing the amount of systemresources, etc.). The use of such an indicator is described in moredetail in regards to FIGS. 11, 12, 13, and 14 below.

In various embodiments, the apparatus 500 may include a page parser 506configured to parse or analyze the structure and contents of a receivedweb page 550. In one embodiment, a structural representation of the webpage (e.g., a HTML page, etc.) may be analyzed by the page parser 506 todetermine which additional data 550 need to be requested or receivedfrom a server or providing device (e.g., memory 214 of FIG. 2). In oneembodiment, the elements included in the structural representation ofthe web page may be edited prior to performing any additional datarequests regarding the web page. In another embodiment, the dataretrieval engine 502 may request additional data associated with the webpage prior to or during the competition of the editing of the web page.As described above, such received but unused data, due to an element'sremoval from the edited web page, may be cached or discarded.

In one embodiment, the apparatus 500 may include a page editor 508. Thepage editor 508 may be configured to dynamically edit the requested webpage, or portions thereof, based upon the monitored system resources, asdescribed above. In various embodiments, editing or adjustment decisionsmay be further guided by data provided by the user preference manager532, as described below.

In various embodiments, the page editor 508 may include a variety ofsub-modules each configured to process and edit a different type of webpage element. In other embodiments, the sub-modules may be less definedby the type of element and more defined by another way of defining theprocess of page editing, for example a pipelined approach, although itis understood that the above is merely one illustrative example to whichthe disclosed subject matter is not limited.

In some embodiments, the page editor 508 may include a structure editor520 configured to determine, edit and alter the structure of thereceived web page. In various embodiments, the structure may be definedvia an HTML, XHTML, Extended Markup Language (XML), JavaScript ObjectNotation (JSON), etc. format. The Structure editor 520 may be configuredto remove or add elements that define the stricture of the received webpage 550. In another embodiment, the structure editor 520 may coordinatethe additional element type based sub-modules by sending and receivingelements to and from the sub-modules.

The page editor 508 may include, in one embodiment, a plug-in orextension editor 524 configured to edit, adjust, remove or replace webpage elements associated with a plug-in or extension. In variousembodiments, this may include elements that include precompiledexecutable code. In another embodiment, editing may include alteringfields or values passed to the plug-in or extension, which may alter theway the plug-in processes the data contained in the element. In yetanother embodiment, the plug-in editor 524 may monitor the amount ofsystem resources consumed by a plug-in element and remove or replace theelement once a certain amount of system resources have been consumed, asdescribed above. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

In various embodiments, the page editor 508 may include a script manager522. The script manager 522 may be configured to alter, edit, or removeclient-side scripts included by the requested web page 550. As describedabove, this may include altering timers or counters and changing therefresh rate of various script actions (e.g., requesting data, specialeffects, etc.), expanding user collapsible information, etc. In anotherembodiment, the script manager 522 may be configured to provide wrapperscripts which conditionally turn off or replace edited, replaced, orremoved elements (e.g., via an If-Then statement, etc.), as describedabove.

In some embodiments, the page editor 508 may include a video manager526. The video manager 526 may be configured to edit web page elementsassociated with video files (e.g., the HTML5 Video tag, the HTML EMBEDtag, a video plug-in, etc.). In various embodiments, the video manager526 may be configured to manage the data associated with a videoelement. For example, the video manager 526 may dictate that theassociated data of a removed video element not be downloaded orretrieved. Alternately, the video data may be cached in part and notdownloaded in part, or downloaded and cached even if the video elementwas removed or edited to no longer require the video data (e.g.,un-displayed data 554), etc. It is understood that the above are merelya few illustrative examples to which the disclosed subject matter is notlimited.

In one embodiment, the page editor 508 may include an image manager 528.The image manager 528 may be configured to edit web page elementsassociated with image files (e.g., the HTML5 Canvas tag, the HTML IMGtag, etc.), as described above. As with the video manager 526, the imagemanager 528 may be configured to manage the data and files (e.g., a JPEGfile, a WebP file, etc.).

In some embodiments, the page editor 508 may include a media manager530. The media manager 530 may be configured to edit web page elementsassociated with media, or as it is sometimes called “rich media” (e.g.,video, audio, animation, etc.), as described above. In some embodiments,the media manager may include the video manager 526, the image manager528, and other specialized media managers (e.g., an audio manager (notshown), etc.). The media manager 530 may also manage the data associatedwith media elements, as described above.

In various embodiments, the page editor 508 may be configured to produceor generate the edited web page 552. In some embodiments, the pageeditor 508 may produce portions of the edited web page, in which casethe page editor 508 may produce edited data 552. This data or web page552 may be provided to the rendering engine 510.

In one embodiment, the apparatus 500 may include a rendering engine 510.The rendering engine 510 may be configured to display or format fordisplay the edited web page 552.

The apparatus 500 may also include a user interface (UI) 512 configuredto facilitate the interaction between the user and the apparatus 500. Insome embodiments, the UI 512 may be produced by the rendering engine510. Via the UI 512, the user may request the web page or requestrestoration of edited, removed, or replaced elements. As describedabove, the page editor 508 may be configured to re-edit the web page,producing a second version of the edited web page 552, according to theuser's wishes.

The apparatus 500 may include a user preference manager 532. In variousembodiments, the user preference manager 532 may be configured to managethe collection and retrieval of the user preferences. The userpreference manager 532 may be configured to acquire or retrieve a set ofuser preferences to be input into the page editor 508. As describedabove, these user preferences may be acquired locally or may be acquiredfrom a remote device, as discussed in more detail in regards to FIG. 6.In various embodiments, the user preferences may include an aggregationof user preferences, a set of user preferences associated with thecurrent user of the device or apparatus, or a combination thereof.

In one embodiment, the user preference manager 532 may be configured tomonitor, record, and store user requests for the restoration of edited,removed, or replaced elements or content, or user changes to predefinedsettings (e.g., via a preferences dialog box, etc.). In variousembodiments, this data may be stored locally. In another embodiment,these user preferences may be stored remotely, as discussed in moredetail in regards to FIG. 6.

FIG. 6 is a block diagram of an example embodiment of a system 600 inaccordance with the disclosed subject matter. In one embodiment, thesystem 600 may include a client or user device 202, at least oneapplication server 204, and at least one preferences server 606. Theclient device 202 may be accessed or used by the user 290.

In such an embodiment, one or more user preferences 644 may be storedwithin a preferences server 606. These user preferences 644 may beaccessed by the client device 202. Further, the client device 202 mayupload or transmit locally acquired or stored user preferences 644 tothe preferences server 606 for storage. In some embodiments, theapplication server 204 may communicate with the preferences server 606to acquire or store user preferences 644.

In one embodiment, the preferences server 606 may include a userpreferences database (DB) or repository 642. The user preferences DB 642may be configured to store user preferences associated with a pluralityof users (e.g., user 290). In such an embodiment, the user preferencesof a given user (e.g., user 290) may be accessed from a number ofdevices (e.g., client device 202, second client device 608, etc.). Theuser 290 may then access their user preferences regardless of the devicethey are using (assuming the used device may access the preferencesserver 606). In various embodiments, this may include synchronizing theuser preferences 644 across multiple devices (e.g., devices 202 or 608,etc.).

In one embodiment, the user preference information may be stored in ananonymous or a pseudononymous way such that the user preferences 644 maynot be easily correlated with a given user (e.g., user 290). In someembodiments involving pseudononymous storage, the accessing device 202may present a unique identifier or key to access the desired user 290'suser preferences 644.

In one embodiment, some user preferences may be stored in an indefinablemanner, such that a user 290 may access their own preferences. Suchaccess may require a registration process for the user 290 be completed.However, user preferences 644 may also be stored in an anonymousfashion. In such an embodiment, user preferences of both registered andun-register users may be stored within the user preference DB 644. It isunderstood that an opt-in or opt-out model may be employed for thecollection of the anonymous data, such that user's privacy preferencesmay be accommodated.

In various embodiments, the preferences server 606 may include a userpreferences engine 640. The user preferences engine 640 may beconfigured to receive and transmit responses to requests for userpreference data. Such requests may include requests for a specific user290's preferences, or requests regarding aggregated user preferences, asdescribed above, although it is understood that the above are merely afew illustrative examples to which the disclosed subject matter is notlimited. Further, the user preferences engine 640 may be configured toreceive incoming user preference data for storage within the userpreference DB 642.

In some embodiments, the user preferences engine 640 may be configuredto process the plurality of stored or incoming user preferences todetermine an aggregate “average” or baseline set of user preferences. Asdescribed above, such a baseline set of user preferences 646 may beemployed by the client device 202 or other receiving device to determinewhich elements of a requested web page should be edited or adjusted.These baseline set or aggregated user preferences 646 may be employed bythe receiving device (e.g., devices 202, 204, 608, etc.) if a web pagehas been requested that the actual user 290 does not have a set of userpreferences for. In such an embodiment, the receiving device may editthe requested web page based upon the preferences of a fictional“average” user as defined by the baseline or aggregated user preferences646, as described above. As described above, the baseline set of userpreferences may be based upon a sub-portion of the users that aresimilar to the current user. Such personalized user preferences aredescribed in more detail below.

In various embodiments, the user preferences engine 640 may beconfigured to process the plurality of stored or incoming userpreferences to determine a personalized set of user preferences 648based upon a given user (e.g., user 290). In such an embodiment, theuser preferences engine 640 may be informed that a user 290 wishes theiruser preferences. In addition to the user's own preferences 644, theuser preferences engine 640 may prepare or have prepared a personalizedset of baseline user preferences 648. The personalized preferences 648may be computed not by looking at all of the users aggregated in theuser preference DB 642, but by only a subset of the users whichcorrelate with the user 290. In various embodiments, correlation may bedetermined by, for example, by demographics, by the correlation of theuser 290's preferences with other users' preferences, or via othertechniques; it is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited. The personalized user or user preferences 648 may be employedby the receiving device (e.g., device 202, etc.) in the same manner asthe baseline user preferences 646, as described above.

As described above, the client device has generally determined the levelof system resource usage for each web element. In one embodiment, theclient device may monitor the level of system resource usage of anentire tab, web page, or application. In such an embodiment, the systemresource usage of the tab, web page, or application may be displayed tothe user.

FIG. 7 is a diagram of example embodiments of user interfaces (UIs) 701and 702 in accordance with the disclosed subject matter. As discussed inconnection with FIG. 6, the client device may determine the level ofsystem resource usage. In such an embodiment, a monitoring applicationmay display the system resource usage of various tabs, web pages, orgroups thereof. In the illustrated embodiment, the monitoringapplication is illustrated as a special tab or a web application, but itis understood that the above is merely one illustrative example to whichthe disclosed subject matter is not limited.

To help a user or other program optimize system resources (e.g., batterylife, etc.) a client device can provide a system resource meteringapplication such as that shown by UIs 701 and 702. The meteringapplication may provide information indicating the amount of systemresources (e.g., power, bandwidth, etc.) currently being drawn from thedevice (e.g., battery, etc.), and the drains (e.g., applications, webpages, tabs, etc.) that are currently consuming those system resources.

In one embodiment, shown in UI 701, the metering application 700displays a list 710 of web applications running on the client device,and a histogram 720 disclosing how much system resources (e.g., power,etc.) each web application is currently consuming. In an alternativeembodiment, shown in UI 702, the metering application 700 displays alist of browser tabs 760, and a histogram 770 disclosing how much systemresources each tab is currently consuming.

The system resource metering or monitoring application 700 embodimentshown in UI 702 may be useful for client devices where the userprincipally uses a tab-based browser to interact with the Internet,intranet or “cloud.” For example, UI 702 shows a user who has four tabsopened in their browser: CNN™, ESPN™, DISNEY™ and GMAIL™, for example.In the illustrated embodiment, the DISNEY™ tab, which may be receivingand processing a DISNEY™ video stream, is drawing the most power. In theillustrated embodiment, the monitored and displayed system resource maybe operational power (e.g., from a battery, or wall electrical outlet,etc.). The CNN™ and ESPN™ tabs, which may receive periodic news andsports feeds from the CNN™ and ESPN™ websites, respectively, are drawingabout the same amount of power, but less power than the DISNEY™ tab.Finally, the GMAIL™ tab, which is displaying the user's email program,may be drawing the least amount of power as it is largely in a quiescentstate, waiting for email messages to arrive or for the user to reviewold email messages or compose new ones.

Likewise, 700 embodiment shown in UI 701 may be useful for clientdevices where the user principally uses a task based applications tointeract with the Internet, intranet or “cloud.” For example, UI 701show a user who has three web applications open: an email client, aninternet chat client, and a media player. In various embodiments, eachweb application may occupy one tab of a web browser, although it isunderstood that the above is merely one illustrative example to whichthe disclosed subject matter is not limited. In the illustratedembodiment, the monitored and displayed system resource may be networkbandwidth consumption (e.g., from a cellular network or a wireless localarea network (WLAN), etc.). The media player web application, which maybe streaming a video, may display the greatest amount of networkbandwidth usage. The chat web application, which may transmit andreceive many small messages, may display a medium amount of networkbandwidth usage. The email web application, which may receive largermessages but with a much lower frequency, may consume the least amountof network usage.

In various embodiments, the monitoring application 700 may displayvarious degrees of usages granularity. For example, tabs or applicationsmay be grouped together (e.g., tab groups, etc.), the system resourceusage of windows, virtual desktops, or other UI elements may bemonitored and displayed. It is understood that the above are merely afew illustrative examples to which the disclosed subject matter is notlimited.

The metering application 700 can display the client device's currentsystem resource usage in any number of ways, such as a histogram asshown in UIs 701 or 702, a pie chart, as a numerical value, etc. It isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited. In variousembodiments, the monitoring application 700 may display each applicationor tab's power draw in absolute terms (e.g., in watts or some othermeasure of system resources), or in relative terms (e.g., as apercentage of the total system resource consumption).

In various embodiments, one or more system resources and theirrespective usage may be displayed by the metering application 700. Inone embodiment, the metering application 700 may be configured tomonitor and display the power consumption of the tabs or application,for example. In another embodiment, multiple system resources may bedisplayed and monitored. For example, the power usage and the bandwidthor network usage of the tabs or applications may be monitored. It isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

Further, it is understood that the client device may monitor more systemresources than are displayed within the monitoring application 700. Invarious embodiments, these un-displayed system resources may stillemployed for purposes of editing requested web pages, as describedabove.

The amount of system resources (e.g., power) currently being drawn fromthe client device or sub-component thereof (e.g., battery) by each tabmay be determined in a number of ways. For example, the power draw canbe determined and displayed as the instantaneous power draw (e.g., bymeasuring the actual power draw at a given instant of time, etc.). Tomeasure the power draw from the battery necessary or estimated to runeach web application or tab, the total power draw from the battery canbe multiplied by the fractional amount of time each application or tabis granted processor cycles or other system resources such memoryaccesses. Other means of measuring or estimate other system recourseconsumption may be employed.

While measuring the instantaneous system resource (e.g., power, etc.)draw of each web application or tab may be suitable for web applicationsor tabs that draw a relatively constant amount of system resources, itmay be less suitable for web applications or tabs that have highlyvariable system resource usage. For such web applications or tabs, itmay be more appropriate to determine and display the power draw as theaverage amount of system resources over some meaningful period of time(e.g., 1, 10, 30 or 60 minutes, etc.). In yet another embodiment, it maybe appropriate to display some historically determined measure of theaverage system resource consumption associated with that web applicationor tab. The historically determined measure may be obtained, forexample, from a prior histogram of that web application or tab'sinstantaneous system resource draw over the previous lifetimes of theweb application or tab.

In one embodiment, to determine a web application or tab's historicalsystem resource consumption, the operating system or browser may createa system resource consumption histogram for every new web application,tab or web page that is opened. The client device may then periodicallymeasure the instantaneous system resource consumption of the applicationor tab, and populate the histogram with that measurement. Statisticalinformation from that histogram (e.g., its mean or median value,together with its standard deviation, etc.) or other measurements of thesystem resource consumption distribution may be used to determine theweb application or tab's system resource consumption.

In various embodiments, to keep the histogram or other measure of systemresource consumption current, an aging factor may be employed. Forexample, in one embodiment the data that is less than a certain age(e.g., less than 1, 2 or 3 hours old, etc.) may be used to populate thehistogram. In one embodiment, when the web application or tab is closed,the histogram and its contents may be destroyed. In another embodiment,the histogram and its contents can be saved and opened and added to whenthe same web application or tab (e.g., pointing to the same URL, etc.)is opened in the future.

FIG. 8 is a diagram of an example embodiment of a user interface 800 inaccordance with the disclosed subject matter. As discussed in connectionwith FIG. 7, the client device may display information regarding theamount of system resource usage of each tab or web application, etc. Inthe illustrated embodiment of FIG. 8, the requested web page of tab 302and the tabs 304, 306, and 308 of FIG. 3 are again illustrated. In theillustrated embodiment, the monitoring application may be displayed notas a special tab or web application, but integrated within the tabs 302,304, 306, and 308 themselves. It is understood that the above is merelyone illustrative example to which the disclosed subject matter is notlimited.

In the illustrated embodiment, the display 810 of the level of consumedsystem resources may directly one the individual tabs (e.g., tabs 302,304, 306, and 308). In one embodiment, the display of the systemresource consumption of each tab may be shown as a rank (e.g., 1^(st),2^(nd), 3^(rd), etc.). In another embodiment, the display of systemresource consumption may be shown as a bar graph, color code, numericalvalue, etc. As described above in reference to FIG. 4, in variousembodiments the client device may also display 414 the amount of systemresources consumed for each web element (e.g., web element 318, etc.).

In various embodiments, a user or program (e.g., the web browser, etc.)may use the information displayed by metering application to optimizesystem resource usage. For example, a user may decide to close tab 306of FIG. 8 to conserve resources. In another embodiment, the user orclient device may conserve battery life by closing or throttling webapplications or browser tabs that are not currently needed or that drawtoo much power. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

FIG. 9 is a flowchart of an example embodiment of a technique 900 inaccordance with the disclosed subject matter. As discussed in connectionwith FIGS. 3, 4, 5, and 6, the client device may in the illustratedembodiment, in addition to displaying the system resource usage ofvarious web applications or tabs, the client device may execute anapplication throttling process that monitors the system resource usageof the web applications or tabs that are running on the client device,and potentially throttles those web applications or tabs. It isunderstood that the above is merely one illustrative example to whichthe disclosed subject matter is not limited.

Block 902 illustrates that, in one embodiment, such a throttling processmay include monitoring the system resource usage (e.g., operating powerdraw, etc.) of all web applications or tabs running on the platform, asdescribed above. In various embodiments, this may include monitoring theoutput of the metering application.

Block 904 illustrates that, in one embodiment, the throttling processmay then determine if any of the web applications or tabs exceed athreshold. In various embodiments, the threshold may be a constant or afunction of the estimated system resources (e.g., operating power, etc.)left for the client device (e.g., in the battery, etc.). In someembodiments, the threshold can be the same for all web applications andtabs, or vary according to the type of web application and tab (e.g., amedia player may have a high network usage threshold, a word processormay be threshold limited by operating power, etc.). It is understoodthat the above are merely a few illustrative examples to which thedisclosed subject matter is not limited.

Block 906 illustrates that, in one embodiment, that when the clientdevice identifies a web application or tab that draws more power thanits respective threshold, the client device may further determinewhether user permission to throttle the web application or tab isrequired. In various embodiments, the determination of the userpermission requirement may be based upon the user's user preferencesdescribed above.

Block 912 illustrates that, in one embodiment, if no permission isrequired, the client device may throttle a system resource hungry webapplication or tab. In some embodiments, this may involve editing theweb application or tab, as described above. In another embodiment,throttling the web application or tab may include, for example, givingthe web application or tab a lower execution priority or lower refreshrate, or by otherwise granting it fewer processor cycles or access tosystem resources, etc. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

Block 908 illustrates that, in one embodiment, if the throttling processdoes require permission to throttle the system resource hungry webapplication or tab, the client device may request user permission.

Block 910 illustrates that, in one embodiment, if permission is denied,the client device may continue to monitor the system resource usage ofthe other web applications or tabs. In another embodiment, the clientdevice may adjust the system resource threshold of that web applicationor tab. For example, the threshold may be raised to avoid requesting theuser's permission to throttle the web application or tab too often. Theclient device may then continue to monitor the system resource usage ofall the web applications or tabs, as described above. It is understoodthat the above are merely a few illustrative examples to which thedisclosed subject matter is not limited.

However, if permission is granted, the client device may throttle thesystem resource hungry application or tab, as described above.

The throttling process shown in FIG. 9 may throttle the system resourceusage of web applications or tabs in a number of ways, depending on theparticular web application or tab. For example, the client device maylower the execution priority of a web application or tab, or lower therate at which an image that the web application or tab displays onscreen is rendered or refreshed. For web applications and tabs that relyon network updates or feeds, the throttling process may reduce thefrequency with which the web applications and tabs perform those updatesor feeds. For applications and tabs that perform a polling function,e.g., for a mail application that periodically polls a mail server, thethrottling process can reduce the web application or tab's pollingfrequency. It is understood that the above are merely a few illustrativeexamples to which the disclosed subject matter is not limited.

In a specific embodiment, the throttling process shown in FIG. 9 mayreduce the power draw of application and tabs by monitoring theprocessor usage, and controlling the demand the web applications put onthe processor in order to entice the processor to enter a lower powerstate. In doing so, the throttling process may take advantage of innatepower management functionality sometimes built into modern processors.

In such an embodiment, the technique may take advantage of processorfunctionality that allows the processor to run at one of several clockspeeds depending on the processing demand. When demand is high, theprocessor may automatically run at a higher clock speed to meet thedemand, thereby providing system responsiveness. Unfortunately, this maycause the processor to draw more operating power from the battery.Conversely, when processor demand is low, the processor mayautomatically run at a lower clock speed, thereby drawing less powerfrom the battery.

In such an embodiment, by monitoring the processor demand, thethrottling process may fine tune the processing demand that the webapplications or tabs collectively place on the processor. This in turnmay to reduce the operating power draw from the battery. For example, ifthe processor demand is just above a clock-changing threshold, thethrottling process can reduce the demand made on the processor by one ormore web applications or tabs just enough to allow the processor toreduce its clock speed. This can be done, for example, by reducing thepolling rate of one or more web applications or tabs, or reducing therefresh rate, or reducing the frequency with which network feeds orupdates are processed. It is understood that the reduction of theprocessor power state is merely one illustrative example to which thedisclosed subject matter is not limited.

FIG. 10 is a block diagram of an example embodiment of an apparatus 1000in accordance with the disclosed subject matter. As discussed inconnection with FIG. 5, the client device may edit a requested web pageto reduce the usage of system resources. As discussed in connection withFIG. 9 a method of throttling may also or alternatively be employed toreduce the use of system resources. In one embodiment, the apparatus1000 may include an operating system and applications (e.g., a webbrowser). In various embodiments, some or all of the apparatus 1000 maybe embodied in hardware, firmware, software, or a combination thereof.

In various embodiments, the apparatus 1000 may include many of thecomponents of the apparatus 500 of FIG. 5. In addition, the apparatus1000 may include a page throttler 1004 to throttle web applications, webpages, or tabs, as described above.

In one embodiment, the system resource monitor interface 1014 maymonitor the system resources of the client device, as described above.The system resource monitor interface 1014 may also monitor the systemresource usage of web applications, web pages, tabs, or other level ofsystem resource monitoring, as described above. In such an embodiment,the system resource monitor interface 1014 may generate, store, andupdate the system resource usage histograms 1016, as described above.

In various embodiments, system resource monitor interface 1014 maygenerate a monitor application page 1002. In various embodiments, thismonitor application page 1002 may include the UIs 701 or 702 of FIG. 7,as described above. In another embodiment, the system resource monitorinterface 1014 may provide information (e.g., a system resource usagevalue, etc.) to the page editor 508 or rendering engine 510. In such anembodiment, the page editor 508 or rendering engine 510 made display theinformation to the user (e.g., via badges or icons 810 of FIG. 8). It isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

In one embodiment, the page throttler 1004 may throttle the processingof web applications, web pages, or tabs, as described above. In variousembodiments, the page throttler 1004 may receive web applications, webpages, or tabs system resource usage information from the systemresource monitor interface 1014. The page throttler 1004 may comparethis system resource usage information to one or more thresholds, asdescribed above. If a particular web application, web page, or tabexceeds the threshold, the page throttler 1014 may attempt to throttlethe processing of the respective web application, web page, or tab.

In the illustrated embodiment, the apparatus 1000 includes a page editor508, as described above. In such an embodiment, the page throttler 1004may work in conjunction with the page editor 508 to reduce the systemresource usage of a web application, web page, or tab. For example,prior to throttling the web application the apparatus 1000 may attemptto edit the web page that includes the web application. If such editingproves insufficient, the web application may then be throttled. Inanother embodiment, the apparatus 1000 may not include a page editor 508and may rely on throttling. It is understood that the above are merely afew illustrative examples to which the disclosed subject matter is notlimited.

In various embodiments, the page throttler 1004 may include a pluralityof sub-components. Each of these sub-components may throttle a separatesystem resource. For example, the processor throttler 1006 may throttleor adjust the amount of processor execution time a particular webapplication receives. The display throttler 1008 may reduce or adjustthe refresh rate at which a web application (e.g., game, etc.) isdisplayed. The network throttler 1010 may throttle networkcommunications (e.g., frequency of network updates, polling frequencies,etc.). Other system resource throttler(s) 1012 may be included by pagethrottler 1004. It is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited.

FIG. 11 is a diagram of an example embodiment of a user interface (UI)1100 in accordance with the disclosed subject matter. As described abovein reference to FIG. 2, in some embodiments, the application server(e.g., application server 204 of FIG. 2) may be configured to edit oradjust requested web pages based, at least in part, upon the level ofsystem resources of the client device (e.g., client device 202 of FIG.2). The illustrated UI 1100 illustrates some of the adjustments that maybe made by the application server. It is noted that the UI 1100 shows anadjusted version of the web page shown in FIG. 3.

As described above, the application server may be in a position to makemore fundamental adjustments or have more options in the types ofadjustments that may be made to the requested web page than a receivingdevice (e.g., a client device) may have. In such an embodiment, theclient device may communicate an indication to the application server orserver regarding the level of system resources available on the clientdevice. For example, the client device may inform the server of how mushprocessing power is available, the level of battery health, etc. In oneembodiment, this may include one or more fields and values indicating aresource level for each or some of the monitored system resources.

In another embodiment, the server may provide the client device with alist of available versions of the requested web page and theirrespective elements or system resource costs. For example, the servermay be capable of providing a variety of versions of the requested webpage (e.g., a static version of the web page, or an active version ofthe web page, a page with a first set of features, a page with a secondset of features, etc.). The client device may then, based upon themonitored system resources, select or request one of the availableversions of the web page. It is understood that the above are merely afew illustrative examples to which the disclosed subject matter is notlimited.

In various embodiments, the server may also make adjustments similarlyto those shown and described in regards to FIG. 4. However, UI 1100illustrates further example adjustments which may be made to therequested web page.

In one embodiment, the banner image (element 312 of FIG. 3) may bereplaced with a text element 1110. Likewise, with the graphical elementsdisplaying the headlines of the news stories (elements 314 and 314 a ofFIG. 3) that may be replaced with text elements 1114 and 1114 a,respectively. Also, the graphical image mapped footer banner (element322 of FIG. 3) may be replaced with a text element 1122 which includeshyperlinks.

In various embodiments, the video elements (e.g., element 318 of FIG. 3)may be removed from the web page. Likewise, the graphical elementsshowing advertisements (elements 330 and 330 a of FIG. 3) may bereplaced with text element advertisements 1130 and 1130 b. Theexecutable code element showing the video advertisement (element 332 ofFIG. 3) may be replaced with a text element 1130 a. In variousembodiments, the text element advertisements may be for the same ofdifferent products as the more system resource intensive graphical andexecutable code elements of FIG. 3.

In some embodiments, the scripted element (element 320 of FIG. 3) may bereplaced with text element 1120. Whereas the scripted element may haveincluded asynchronous data accesses (e.g., data requests to the server),data refreshes, special UI effects, etc., the more inactive text element1120 may consume a lesser amount of the system resources while providingthe user with a similar amount of information.

In some embodiments, various elements (e.g., text elements 316 and 316a) may not be adjusted or edited by the server. The server may deem thatvarious elements consume an insignificant or acceptable amount of systemresources or provide high value information to the user and are not tobe adjusted. As described above, these determinations may be made basedupon the indicated level of system resources, such that an acceptablelevel of consumption of system resources may differ from one scenario tothe next.

FIG. 12 is a diagram of an example embodiment of a user interface (UI)1200 in accordance with the disclosed subject matter. As described abovein reference to FIG. 2, in some embodiments, the application server(e.g., application server 204 of FIG. 2) may be configured to edit oradjust requested web pages based, at least in part, upon the level ofsystem resources of the client device (e.g., client device 202 of FIG.2). The illustrated UI 1200 illustrates a possible web page that may betransmitted to a client device when the client device has an abundanceof system resources.

The illustrated UI 1200 illustrates a possible web application. Asdescribed above, a web application may include an application that isaccessed over a network such as the Internet or an intranet. The termmay also mean a computer software application that is hosted in abrowser-controlled environment (e.g., a Java applet, etc.) or coded in abrowser-supported language (e.g., JavaScript and HTML) and reliant on acommon web browser to render the application executable. In theillustrated embodiment, UI 1200 illustrates a word processing webapplication.

In one embodiment, the UI 1200 may include an image web element 1202that displays the web application's trademark, name or other identifier.In various embodiments, this web element 1202 may be similar to thebanner image web element 310 of FIG. 3.

The UI 1200 may also include a series of buttons or a toolbar webelement(s) 1204. In the illustrated embodiment, each of these buttons1204 may be associated with a client-side script that performs one ormore actions on the document enclosed by web element 1208. A particularbutton and script may be configured to, for example: change the font ofselected text, change the size of selected text, bold selected text,save the document (e.g., either locally or to a remote server, etc.),undo a previous action, convert selected text into a bulleted list,change the alignment of the text, etc. It is understood that the aboveare merely a few illustrative examples to which the disclosed subjectmatter is not limited. Furthermore, in various embodiments, the buttons1204 may include or be associated with various special effects 1214(e.g., mouse-over text, animations, etc.).

The UI 1200 may include a series of menus or a menu bar 1206. Each menu1212 or sub-menu may include one or more menu items which may beselected by a user. In various embodiments, these menu items may causean action (e.g., similarly to that of the buttons 1204) to be performed.In another embodiment, one or more of these menu items may result in thecreation of a dialog box or other user interface element that allows auser to select more complex actions (e.g., breaking the text of webelement 1208 into columns, setting tab stops, etc.).

The UI 1200 may include a document or text web element 1208. In variousembodiments, the web element 1208 may include a document being edited bya user. In various embodiments, the web element 1208 may display thetext or document being edited in a WYSIWYG (What You See Is What YouGet) fashion, which displays the document, while the document is beingcreated, in a manner very similar to the end result which will be, forexample, printed or published (e.g., via web page, etc.). Asillustrated, some text may be displayed in a bold or underlined format.

The UI 1200 may include a web element 1210 which displays a list ofdocuments or other files associated with the user. In variousembodiments, these documents may be stored on a remote server. Inanother embodiment, these documents may be locally stored. In yetanother embodiment, a combination of locally and remotely storeddocuments may be displayed or made accessible via web element 1210. Insome embodiments, the web element 1210 may employ executable code, aplug-in, or a client-side scripts to access these documents andauthenticate the user's rights to access these documents. It isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

FIG. 13 is a diagram of an example embodiment of a user interface (UI)1300 in accordance with the disclosed subject matter. As described abovein reference to FIG. 2, in some embodiments, the application server(e.g., application server 204 of FIG. 2) may be configured to edit oradjust requested web pages based, at least in part, upon the level ofsystem resources of the client device (e.g., client device 202 of FIG.2). The illustrated UI 1300 illustrates a possible web page that may betransmitted to a client device when the client device has a dearth ofsystem resources, and may be contrasted with the UI 1200 illustrated byFIG. 12.

In one embodiment, the image web element 1202 may be replaced with atext web element 1302. This may be similar to the replacement of thebanner image web element 310 of FIG. 3 with the text web element 1110 ofFIG. 11.

In various embodiments, one or more of the series of buttons or portionof the toolbar 1204 of FIG. 12 may be removed or replaced. In theillustrated embodiment, a number of buttons have been removed fromtoolbar 1304. The decision concerning which buttons may be removed oraltered may be made based upon the amount or type of system resourcesconsumed by the buttons or the actions associated with those buttons.For example, the button associated with text formatting styles (e.g.,Normal, Heading-1, etc.), the creation of bulleted lists, etc. may beremoved from the toolbar 1304. It is understood that the above aremerely a few illustrative examples to which the disclosed subject matteris not limited.

In the illustrated embodiment, the menu bar 1206 may include the samemenus. However, the individual menus 1312 may have menu items (e.g.,borders & shading, columns, etc.) removed, adjusted, or replaced. Asdescribed above, the determination of which menu items or menus 1312 toedit or adjust may be based upon the level of system resources possessedby the client device or consumed by the respective menu items, asdescribed above.

In various embodiments, the document selection web element 1210 of FIG.12 may be removed from the UI 1300. In such an embodiment, the webapplication of UI 1300 may employ less resource intensive means to open,close or save files (e.g., a system provided dialog box, etc.). Inanother embodiment, the dynamic web element 1210 of FIG. 12 may bereplaced with a static web element, such as web element 1120 of FIG. 11.It is understood that the above are merely a few illustrative examplesto which the disclosed subject matter is not limited.

It is understood that, while the web application of FIGS. 12 and 13 havebeen described within the context of the server-side editing andadjustment of web pages, in some embodiments web applications and theweb pages that include the web application may be edited by the clientdevice. In such an embodiment, the client device may dynamically edit oradjust the web page or associated scripts, etc. as described above. Itis also understood that the above is merely one illustrative example ofa web application to which the disclosed subject matter is not limited.

FIG. 14 is a block diagram of an example embodiment of an apparatus 1400in accordance with the disclosed subject matter. As discussed inconnection with FIGS. 2, 11, 12, and 13, the server device may adjust oredit a web page based upon the level of system resources of thereceiving client device. In one embodiment, the apparatus 1400 mayinclude an application server or other device. In various embodiments,some or all of the apparatus 1400 may be embodied in hardware, firmware,software, or a combination thereof.

In one embodiment, the apparatus 1400 may include an applicationinterface 1406. The application interface 1406 may be configured toreceive requests for web pages and other data served by the apparatus1400. In various embodiments, the application interface 1406 may beconfigured to receive an indicator regarding the level of systemresources 1414. As described above, this system resources indicator mayinclude a direct indication of system resource (e.g., fields and values,etc.) or an indirect indication of system resources (e.g., a selectionof one of a plurality of versions of the requested web page, etc.). Itis understood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

The application interface 1406 may be configured to transmit theadjusted web page to the requesting client device, as described above.Further, the application interface 1406 may be configured to transmit amessage detailing the options available when adjusting the requested webpage. As described above, this may take the form of a list of possibleversions of the web page, and may include their contents or systemresource usage expectations. In another embodiment, an options messagemay include a list of features or elements which may be adjusted (e.g.,from videos to text, script variable values, etc.), and the clientdevice may select the feature options as it desires, although it isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited. The applicationinterface 1406 may be configured to receive a message 1412 indicatingthe client device's selection(s); although such a message may beincluded in the system resource message 1414.

In one embodiment, the apparatus 1400 may include an authenticationengine 1408 configured to authenticate a user onto the apparatus 1400,if needed. Further the authentication engine 1408 may be configured toidentify the user for purposes of selecting a proper or associatedserver stored user preference file, as described below. In variousembodiments, the communication between the authentication engine 1408and the client device may occur via the application interface 1406.

In one embodiment, the apparatus 1400 may include an application adapter1402. In various embodiments, the application adapter 1402 may beconfigured to adjust or edit the requested web page based upon theindicated level of system resources 1414, as described above.

In one embodiment, the application adapter 1402 may include a clientsystem resource interface 1420, a page template selector/editor 1422and/or a user preference manager 1424. In the illustrated embodiment,the application adapter 1402 may be configured to employ a templatemodel in which web pages are defined via templates which are thenfleshed-out of filled-in by the application engine 1404. Thesedynamically created web pages may include variables, include statements,or other programming-like features that allow the web page to be createdby the apparatus 1400 based upon a database 1430 of data (e.g., newsstories, etc.). Embodiments that include the use of static web pages arecontemplated and briefly discussed but not discussed in detail.

In various embodiments, the client system resource interface 1420 may beconfigured to process the indicator 1414 of system resources from theclient device. This may include determining which system resources toconserve or which version or template of the web page most closely meetsthe client device's needs or desires. Further, in one embodiment, theclient system resource interface 1420 may be configured to provide amessage detailing the available versions of the web page or the featuresor elements which may be adjusted.

In some embodiments, the page template selector or editor 1422 may beconfigured to dynamically edit or adjust the requested page, based inpart upon the received indicator of system resources 1414. In variousembodiments, the page template selector or editor 1422 may be configuredto edit or adjust the various elements of the requested web page, asdescribed above. In another embodiment, the page template selector oreditor 1422 may be configured to select a version or template of therequested web page 1426 based upon the indicator 1414. In yet anotherembodiment, the page template selector or editor 1422 may be configuredto select a template of the web page 1426 and then further edit oradjust elements within the template based upon the indicator 1414.

In one embodiment, the user preference manager 1424 may be configured toinfluence the editing or adjustment of the elements of the requested webpage based upon user preferences 1428. In one embodiment, the userpreferences 1428 may be stored locally and collected from the clientdevice or from a preference server. In some embodiments, the userpreferences 1428 may be manually input by a user. In the cases in whichas user is identifiable (e.g., after authentication, etc.), preferences1428 specific to the user may be used. Otherwise, a baseline set of userpreferences 1428 may be employed. In various embodiments, a set ofpersonalized user preferences 1428 based upon user similar to thecurrent user may be employed, as described above. Some embodiments maynot include a user preference manager 1424 and instead base theadjustment of the elements or the selection of a web page template 1426upon the received indicator of system resources 1414.

In one embodiment, the application engine 1404 may be configured togenerate the requested web page based upon the adjusted web pagetemplate 1426. The result web page may be referred to as the adjustedweb page 1410. As described above, some embodiments may include staticweb pages which do not require the processing of the application engine1404.

In the illustrated embodiment, the adjusted web page template mayinclude variables or fields which should be expanded or filled in bycontent from a database (e.g., database 1430, etc.). In such anembodiment, the application page creator 1434 may inspect the adjustedweb page template for fields or variables that need to be expanded withcontent from the application data repository or DB 1430. DB 1430 mayinclude things such as news stories, etc. The expanded web page,suitable for transmission to and consumption by the client device may becreated by the application page creator 1434 the expansion of the fieldsor variables.

The application page selector 1432 may be configured to select pages orfiles which are to be included with or associated with the adjusted webpage 1410. Such associated files may include video files, image files,script files, style or formatting description files, etc. It isunderstood that the above are merely a few illustrative examples towhich the disclosed subject matter is not limited.

The application engine 1404 may be configured to generate the adjustedweb page 1410 from the associated files, the content or application dataDB 1430, and the adjusted or selected web page template 1426. Thisadjusted web page 1410 may then be transmitted to the requesting clientdevice.

In some embodiments, the user may request that the adjusted elements berestored to an unadjusted state, similarly to the restoration processdescribed above. In such an embodiment, the application adapter 1402 maybe configured to restore the requested elements. For example, a videoelement may be replaced with an image element, but the image element mayindicate that a video is available. In such an embodiment, the user mayrequest the adjusted video element. This video element or file may betransmitted to the client device.

FIG. 15 is a flow chart of an example embodiment of a technique 1500 inaccordance with the disclosed subject matter. As discussed in connectionwith FIGS. 2, 3, 4, 5, 6, and 10, the client device may edit a receivedweb page based upon the level of system resources. In variousembodiments, the technique 1500 may be used or produced by the systemssuch as those of FIG. 2, 6, or 10. Although, it is understood that theabove are merely a few illustrative examples to which the disclosedsubject matter is not limited. It is understood that the disclosedsubject matter is not limited to the ordering of or number of actionsillustrated by technique 1500.

Block 1502 illustrates that, in one embodiment, one or more systemresources of the apparatus may be monitored, as described above. Invarious embodiments, one or more of the action(s) illustrated by thisBlock may be performed by the apparatuses or systems of FIG. 2, 5, or 6,the system resource monitor 216 of FIG. 2 or the system resource monitorinterface 504 of FIG. 5, as described above.

Block 1504 illustrates that, in one embodiment, a request to display orretrieve a requested web page or multi-element document may be received,as described above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 5, or 6, the web browser or application 218 of FIG. 2 or theuser interface 512 of FIG. 5, as described above.

Block 1506 illustrates that, in one embodiment, at least part of therequested web page or multi-element document may be received, asdescribed above. In some embodiments, the web page may include amulti-element document. In various embodiments, one or more of theaction(s) illustrated by this Block may be performed by the apparatusesor systems of FIG. 2, 5, or 6, the web browser or application 218 ofFIG. 2 or the user interface 512 of FIG. 5, as described above.

Block 1508 illustrates that, in one embodiment, the requested web pageor multi-element document may be dynamically edited based, at least inpart, upon the monitored system resources, as described above. Invarious embodiments, dynamically editing may include removing elementsfrom the requested web page or multi-element document that would consumemore than a threshold level of system resources, as described above. Inanother embodiment, dynamically editing may include replacing eachremoved element with a placeholder element that indicates that theremoved element has been removed from the requested web page, asdescribed above. In yet another embodiment, dynamically editing mayinclude editing a client-side script to reduce the amount of systemresources consumed as a result of the client-side script's execution, asdescribed above. Further, dynamically editing may also include removingone or more elements of the requested web page or multi-elementdocument, as described above.

In some embodiments, dynamically editing may include editing therequested web page or multi-element document based upon a set of userpreferences, as described above. In various embodiments, the set of userpreferences may include information regarding previous indications fromthe user as to which portions of previous web pages or multi-elementdocuments the user wished to be displayed, as described above. Invarious embodiments, dynamically editing may include requesting the setof user preferences from a remote device configured to store a pluralityof sets of user preferences each set associated with a respective user,as described above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 5, or 6, the web browser or application 218 of FIG. 2 or thepage editor 508 of FIG. 5, as described above.

Block 1510 illustrates that, in one embodiment, the dynamically editedweb page or multi-element document may be displayed, as described above.In one embodiment, displaying may include displaying, to a user, anindication that one or more elements of the requested web page ormulti-element document have been removed from the requested web page ormulti-element document, as described above. In various embodiments, oneor more of the action(s) illustrated by this Block may be performed bythe apparatuses or systems of FIG. 2, 5, or 6, the web browser orapplication 218 of FIG. 2 or the rendering engine 510 or user interface512 of FIG. 5, as described above.

Block 1512 illustrates that, in one embodiment, a request from the userto restore at least one of the removed elements may be received, asdescribed above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 5, or 6, the web browser or application 218 of FIG. 2 or therendering engine 510 or user interface 512 of FIG. 5, as describedabove.

Block 1514 illustrates that, in one embodiment, in response to therequest to restore the requested element(s), the requested element(s)may be dynamically restored to the edited web page or multi-elementdocument, as described above. In various embodiments, one or more of theaction(s) illustrated by this Block may be performed by the apparatusesor systems of FIG. 2, 5, or 6, the web browser or application 218 ofFIG. 2 or the page editor 508 of FIG. 5, as described above.

Block 1516 illustrates that, in one embodiment, the newly edited webpage or multi-element document which includes the restored element(s)may be displayed, as described above. In various embodiments, one ormore of the action(s) illustrated by this Block may be performed by theapparatuses or systems of FIG. 2, 5, or 6, the web browser orapplication 218 of FIG. 2 or the rendering engine 510 or user interface512 of FIG. 5, as described above.

Block 1518 illustrates that, in one embodiment, a user preferenceindicating that the user requested the restoration of the requestedelement(s) may be stored, as described above. In various embodiments,the user preferences may be stored locally or remotely, as describedabove. Block may be performed by the apparatuses or systems of FIG. 2,5, or 6, the web browser or application 218 of FIG. 2 or the userpreference manager 532 of FIG. 5, or the preference server 606 of FIG.6, as described above.

FIG. 16 is a flow chart of an example embodiment of a technique 1600 inaccordance with the disclosed subject matter. As described above inreference to FIGS. 7, 8, 9, and 10, the client device may display theamount of system resources consumed by each tab, web application, orother level of measurement or display. In various embodiments, thetechnique 1600 may be used or produced by the systems such as those ofFIG. 2, 5, 6, or 8. Although, it is understood that the above are merelya few illustrative examples to which the disclosed subject matter is notlimited. It is understood that the disclosed subject matter is notlimited to the ordering of or number of actions illustrated by technique1600.

Block 1602 illustrates that, in one embodiment, the number of open tabsin one or more tabbed based browsers running on the computer may beidentified, as described above. In various embodiments, one or more ofthe action(s) illustrated by this Block may be performed by theapparatuses or systems of FIG. 2, 5, or 6, the system resource monitor216 of FIG. 2 or the system resource monitor interface 1014 of FIG. 10,as described above.

Block 1604 illustrates that, in one embodiment, the system resourceusage of each tab may be determined, as described above. In variousembodiments, determining may include generating a histogram for each tabwhen each tab is opened, as described above. In some embodiments,generating a histogram may include creating a new histogram for each tabwhen each tab is opened, as described above. In another embodiment,generating a histogram may include opening a preexisting histogram foreach tab saved from a previous browsing session, as described above.

In various embodiments, determining may include measuring the systemresource usage of each tab at a plurality of intervals over the lifetimeof the respective tab, as described above. Determining may also includepopulating the histogram for each tab with each measurement of thattab's system resource usage to create a system resource usagedistribution for that tab, as described above. Further determining mayinclude using a statistical measure of the system resource usagedistribution of each tab to determine the system resource usage of eachtab, as described above. In various embodiments, one or more of theaction(s) illustrated by this Block may be performed by the apparatusesor systems of FIG. 2, 5, or 6, the system resource monitor 216 of FIG. 2or the system resource monitor interface 1014 of FIG. 10, as describedabove.

Block 1606 illustrates that, in one embodiment, the system resourceusage of each tab may be displayed in a system resource meter, asdescribed above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 5, or 6, the system resource monitor 216 of FIG. 2 or thesystem resource monitor interface 1014 of FIG. 10, as described above.

Block 1608 illustrates that, in one embodiment, the histogram may beaged to remove system resource usage measurements that are older than apredetermined period of time, as described above. In variousembodiments, one or more of the action(s) illustrated by this Block maybe performed by the apparatuses or systems of FIG. 2, 5, or 6, thesystem resource monitor 216 of FIG. 2 or the system resource monitorinterface 1014 of FIG. 10, as described above.

FIG. 17 is a flow chart of an example embodiment of a technique 1700 inaccordance with the disclosed subject matter. As disused in reference toFIGS. 9 and 10, the client device may throttle tabs or web applications,to reduce or control the use of system resources. In variousembodiments, the technique 1700 may be used or produced by the systemssuch as those of FIG. 2, 5, 6, or 10. Although, it is understood thatthe above are merely a few illustrative examples to which the disclosedsubject matter is not limited. It is understood that the disclosedsubject matter is not limited to the ordering of or number of actionsillustrated by technique 1700.

Block 1702 illustrates that, in one embodiment, the number of webapplications running in open tabs in one or more tab based browsersrunning on the computer may be identified, as described above. Invarious embodiments, one or more of the action(s) illustrated by thisBlock may be performed by the apparatuses or systems of FIG. 2, 5, or 6,the system resource monitor 216 of FIG. 2 or the system resource monitorinterface 504 of FIG. 5, as described above.

Block 1704 illustrates that, in one embodiment, the system resourceusage of each web application in each open tab may be measured, asdescribed above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 5, or 6, the system resource monitor 216 of FIG. 2 or thesystem resource monitor interface 504 of FIG. 5, as described above.

Block 1706 illustrates that, in one embodiment, the system resourceusage of each web application in each open tab may be compared to asystem resource threshold, as described above. In various embodiments,the system resource threshold may be one or more of the following:identical for all tabs, a constant value, a function of the estimatedpower left in a battery that powers the computer, a function of a webapplication running in the tab, etc. It is understood that the above aremerely a few illustrative examples to which the disclosed subject matteris not limited. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 5, or 6, the system resource monitor 216 of FIG. 2 or thesystem resource monitor interface 504 of FIG. 5, as described above.

Block 1708 illustrates that, in one embodiment, any web application inan open tab whose power draw exceeds the system resource threshold maybe throttled, as described above. In one embodiment, throttling mayinclude lowering the execution priority of any open tab whose power drawexceeds a power threshold, as described above. In another embodiment,throttling may include lowering the network refresh rate of any open tabwhose power draw exceeds the power threshold, as described above. In yetanother embodiment, throttling may include lowering the display refreshrate of any open tab whose power draw exceeds the power threshold, asdescribed above. In some embodiments, throttling may include reducingthe polling frequency of any open tab whose system resource usageexceeds the system resource threshold.

In yet another embodiment, throttling may include monitoring a processorusage of the computer, and controlling a processor demand that one ormore tabs in a tabbed browser place on the processor to induce theprocessor to enter a lower power state, as described above. In variousembodiments, one or more of the action(s) illustrated by this Block maybe performed by the apparatuses or systems of FIG. 2, 5, or 6, thesystem resource monitor 216 of FIG. 2 or the system resource monitorinterface 504 of FIG. 5, as described above.

FIG. 18 is a flow chart of an example embodiment of a technique 1800 inaccordance with the disclosed subject matter. As described above inreference to FIGS. 2, 11, 12, 13, and 14, the server may be adjust oredit web pages based upon the level of system resources of therequesting client device. In various embodiments, the technique 1800 maybe used or produced by the systems such as those of FIG. 2, 3, 4, 6, 11,or 14. Although, it is understood that the above are merely a fewillustrative examples to which the disclosed subject matter is notlimited. It is understood that the disclosed subject matter is notlimited to the ordering of or number of actions illustrated by technique1800.

Block 1802 illustrates that, in one embodiment, a request from a clientdevice for a web page or multi-element document may be received, asdescribed above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 6, or 14, the application server 204 of FIG. 2 or theapplication interface 1406 of FIG. 14, as described above.

Block 1803 illustrates that, in one embodiment, the client device may beprovided with an indication of the web page or multi-element documentelements that may be adjusted, as described above. In variousembodiments, one or more of the action(s) illustrated by this Block maybe performed by the apparatuses or systems of FIG. 2, 6, or 14, theapplication server 204 of FIG. 2 or the application interface 1406 ofFIG. 14, as described above.

Block 1804 illustrates that, in one embodiment, a request may be made,to the client device, the indicator related to the level of systemresources of the client device. In various embodiments, one or more ofthe action(s) illustrated by this Block may be performed by theapparatuses or systems of FIG. 2, 6, or 14, the application server 204of FIG. 2 or the application interface 1406 of FIG. 14, as describedabove.

Block 1806 illustrates that, in one embodiment, an indicator related tothe level of system resources of the client device may be received fromthe client device, as described above. In various embodiments, receivingan indicator may include receiving an indication of an amount ofoperating power included by the client device, as described above. Inanother embodiment, receiving an indicator may include receiving aselection from the client device as to which element options ortemplates the client device wishes to receive, as described above. Inanother embodiment, receiving may include receiving an indication of thebandwidth provided by a communications channel employed to communicatebetween the server and the client device, as described above. In variousembodiments, one or more of the action(s) illustrated by this Block maybe performed by the apparatuses or systems of FIG. 2, 6, or 14, theapplication server 204 of FIG. 2 or the application interface 1406 ofFIG. 14, as described above.

Block 1808 illustrates that, in one embodiment, one or more of theelements included by the requested web page or multi-element documentmay be dynamically adjusted based, at least in part, upon the receivedindicator, as described above. In various embodiments, dynamicallyadjusting may include selecting one of a plurality of web page ordocument templates based upon the received indicator, wherein each ofthe plurality of web page or document templates is based upon arespective system resource usage profile, as described above. In anotherembodiment, dynamically editing may include adjusting the aggregate sizeof the elements based upon the indicated bandwidth of the communicationschannel, as described above. In yet another embodiment, dynamicallyadjusting may include adjusting the element(s) based upon the indicatedamount of operating power included by the client device, as describedabove.

In one embodiment, dynamically adjusting may include retrieving a set ofuser preferences associated with a user of the client device, asdescribed above. In some embodiments, the set of user preferences mayinclude preferences indicating which elements the user finds important,as described above. Further dynamically editing may include adjustingthe element(s) based upon the set of user preferences and the indicatorof the level of system resources, as described above.

In another embodiment, dynamically adjusting may include determining atleast one system resource to be conserved, and replacing elements withreplacement elements, as described above. In such an embodiment, thereplacement elements may be configured to cause the client system toconsume less of the determined system resource than the replacedelements, as described above. In various embodiments, one or more of theaction(s) illustrated by this Block may be performed by the apparatusesor systems of FIG. 2, 6, or 14, the application server 204 of FIG. 2 orthe application adapter 1402 of FIG. 14, as described above.

Block 1810 illustrates that, in one embodiment, the adjusted web page ormulti-element document may be transmitted to the client device, asdescribed above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 6, or 14, the application server 204 of FIG. 2 or theapplication interface 1406 of FIG. 14, as described above.

Block 1812 illustrates that, in one embodiment, a request from theclient device for one or more of the replaced elements may be received,as described above. In various embodiments, one or more of the action(s)illustrated by this Block may be performed by the apparatuses or systemsof FIG. 2, 6, or 14, the application server 204 of FIG. 2 or theapplication interface 1406 of FIG. 14, as described above.

Block 1814 illustrates that, in one embodiment, the requested elementmay be transmitted to the client device, as described above. In someembodiments, a newly adjusted version of the web page or multi-elementdocument may be transmitted to the client, as described above. Invarious embodiments, one or more of the action(s) illustrated by thisBlock may be performed by the apparatuses or systems of FIG. 2, 6, or14, the application server 204 of FIG. 2 or the application interface1406 or application adapter 1402 of FIG. 14, as described above.

Various implementations of the systems and techniques described hereincan be realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed herein can be implemented on a computer having a displaydevice (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display)monitor) for displaying information to the user and a keyboard and apointing device (e.g., a mouse or a trackball) by which the user canprovide input to the computer. Other kinds of devices can be used toprovide for interaction with a user as well; for example, feedbackprovided to the user can be any form of sensory feedback (e.g., visualfeedback, auditory feedback, or tactile feedback); and input from theuser can be received in any form, including acoustic, speech, or tactileinput.

The systems and techniques described herein can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the disclosed subject matter.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

1. A method of providing data to a client device, the method comprising:receiving a request from a client device for a multi-element document;receiving, from the client device, an indicator related to the level ofsystem resources of the client device; dynamically adjusting one or moreof the elements included by the requested multi-element document based,at least in part, upon the received indicator; and transmitting theadjusted multi-element document to the client device.
 2. The method ofclaim 1, further including providing the client device with anindication of the multi-element document elements that can be adjusted.3. The method of claim 1, wherein dynamically adjusting the element(s)included by the requested multi-element document includes: selecting oneof a plurality of multi-element document templates based upon thereceived indicator, wherein each of the plurality of multi-elementdocument templates is based upon a respective system resource usageprofile.
 4. The method of claim 1, wherein receiving an indicatorrelated to the level of system resources of the client device includes:receiving an indication of the bandwidth provided by a communicationschannel employed to communicate between the server and the clientdevice; and wherein dynamically adjusting the element(s) included by therequested multi-element document includes: adjusting the aggregate sizeof the elements based upon the indicated bandwidth of the communicationschannel.
 5. The method of claim 1, further including: requesting, fromthe client device, the indicator related to the level of systemresources of the client device.
 6. The method of claim 1, whereindynamically adjusting one or more of the elements included by therequested multi-element document includes: retrieving a set of userpreferences associated with a user of the client device, wherein the setof user preferences includes preferences indicating which elements theuser finds important; adjusting the element(s) based upon the set ofuser preferences and the indicator of the level of system resources. 7.The method of claim 1, wherein dynamically adjusting one or more of theelements included by the requested multi-element document includes:substituting an inactive multi-element document for a activemulti-element document, wherein an active multi-element documentincludes dynamically changing content.
 8. The method of claim 1, whereinreceiving an indicator related to the level of system resources of theclient device includes: receiving an indication of an amount ofoperating power included by the client device; and wherein dynamicallyadjusting the element(s) included by the requested multi-elementdocument includes: adjusting the element(s) based upon the indicatedamount of operating power included by the client device.
 9. The methodof claim 1, wherein dynamically adjusting the element(s) included by therequested multi-element documents includes: determining at least onesystem resource to be conserved, and replacing elements with replacementelements, wherein the replacement elements are configured to cause theclient system to consume less of the determined system resource to beconserved than the replaced elements; and further including: receiving arequest from the client device for one or more of the replaced elements,and transmitting the requested element(s) to the client device.
 10. Anapparatus comprising: a processor; a network interface configured tosend and receive signals as part of operating within a communicationsnetwork; a memory to store executable code that, when executed, causesthe apparatus to: receive a request from a client device for amulti-element document; receive, from the client device, an indicatorrelated to the level of system resources of the client device;dynamically adjust one or more of the elements included by the requestedmulti-element document based, at least in part, upon the receivedindicator; and transmit the adjusted multi-element document to theclient device.
 11. The apparatus of claim 10, wherein the executablecode further causes the apparatus to: provide the client device with anindication of the multi-element document elements that can be adjusted.12. The apparatus of claim 10, wherein the executable code that causesthe apparatus to dynamically adjust the element(s) included by therequested multi-element document includes executable code that causesthe apparatus to: select one of a plurality of multi-element documenttemplates based upon the received indicator, wherein each of theplurality of multi-element document templates is based upon a respectivesystem resource usage profile.
 13. The apparatus of claim 10, whereinthe indicator related to the level of system resources of the clientdevice includes: an indication of the bandwidth provided by acommunications channel employed to communicate between the server andthe client device; and wherein the executable code that causes theapparatus to dynamically adjust the element(s) included by the requestedmulti-element document includes executable code that causes theapparatus to: adjust the aggregate size of the elements based upon theindicated bandwidth of the communications channel.
 14. The apparatus ofclaim 10, wherein the executable code further causes the apparatus to:request, from the client device, the indicator related to the level ofsystem resources of the client device.
 15. The apparatus of claim 10,wherein the executable code that causes the apparatus to dynamicallyadjust the element(s) included by the requested multi-element documentincludes executable code that causes the apparatus to: retrieve a set ofuser preferences associated with a user of the client device, whereinthe set of user preferences includes preferences indicating whichelements the user finds important; adjust the element(s) based upon theset of user preferences and the indicator of the level of systemresources.
 16. The apparatus of claim 10, wherein the executable codethat causes the apparatus to dynamically adjust the element(s) includedby the requested multi-element document includes executable code thatcauses the apparatus to: substitute an inactive multi-element documentfor a active multi-element document, wherein an active multi-elementdocument includes dynamically changing content.
 17. The apparatus ofclaim 10, wherein the indicator related to the level of system resourcesof the client device includes: an indication of an amount of operatingpower included by the client device; and wherein the executable codethat causes the apparatus to dynamically adjust the element(s) includedby the requested multi-element document includes executable code thatcauses the apparatus to: adjust the element(s) based upon the indicatedamount of operating power included by the client device.
 18. Theapparatus of claim 10, wherein the executable code that causes theapparatus to dynamically adjust the element(s) included by the requestedmulti-element document includes executable code that causes theapparatus to: determine at least one system resource to be conserved,and replace elements with replacement elements, wherein the replacementelements are configured to cause the client system to consume less ofthe determined system resource to be conserved than the replacedelements; and wherein the executable code further causes the apparatusto: receive a request from the client device for one or more of thereplaced elements, and transmit the requested element(s) to the clientdevice.
 19. A computer-readable medium being tangibly embodied andincluding executable code that causes an apparatus to receive a requestfrom a client device for a multi-element document; receive, from theclient device, an indicator related to the level of system resources ofthe client device; dynamically adjust one or more of the elementsincluded by the requested multi-element document based, at least inpart, upon the received indicator; and transmit the adjustedmulti-element document to the client device.
 20. The computer-readablemedium of claim 19, wherein the executable code causes the apparatus to:retrieve a set of user preferences associated with a user of the clientdevice, wherein the set of user preferences includes preferencesindicating which elements the user finds important; and adjust theelement(s) based upon the set of user preferences and the indicator ofthe level of system resources.